Mercurial > hg > mercurial-crew-with-dirclash
comparison mercurial/commands.py @ 2971:63c3a1921a67
Add ui.strict config item.
This turns off command matching by unambiguous prefix, and is a good
thing if you want to write future-proof scripts.
This fixes issue 314.
author | Bryan O'Sullivan <bos@serpentine.com> |
---|---|
date | Mon, 21 Aug 2006 21:59:29 -0700 |
parents | 3b7626b861f8 |
children | f63667f694de |
comparison
equal
deleted
inserted
replaced
2970:12d1475b48df | 2971:63c3a1921a67 |
---|---|
505 | 505 |
506 def helpcmd(name): | 506 def helpcmd(name): |
507 if with_version: | 507 if with_version: |
508 show_version(ui) | 508 show_version(ui) |
509 ui.write('\n') | 509 ui.write('\n') |
510 aliases, i = findcmd(name) | 510 aliases, i = findcmd(ui, name) |
511 # synopsis | 511 # synopsis |
512 ui.write("%s\n\n" % i[2]) | 512 ui.write("%s\n\n" % i[2]) |
513 | 513 |
514 # description | 514 # description |
515 doc = i[0].__doc__ | 515 doc = i[0].__doc__ |
1152 | 1152 |
1153 if opts['options']: | 1153 if opts['options']: |
1154 options = [] | 1154 options = [] |
1155 otables = [globalopts] | 1155 otables = [globalopts] |
1156 if cmd: | 1156 if cmd: |
1157 aliases, entry = findcmd(cmd) | 1157 aliases, entry = findcmd(ui, cmd) |
1158 otables.append(entry[1]) | 1158 otables.append(entry[1]) |
1159 for t in otables: | 1159 for t in otables: |
1160 for o in t: | 1160 for o in t: |
1161 if o[0]: | 1161 if o[0]: |
1162 options.append('-%s' % o[0]) | 1162 options.append('-%s' % o[0]) |
1163 options.append('--%s' % o[1]) | 1163 options.append('--%s' % o[1]) |
1164 ui.write("%s\n" % "\n".join(options)) | 1164 ui.write("%s\n" % "\n".join(options)) |
1165 return | 1165 return |
1166 | 1166 |
1167 clist = findpossible(cmd).keys() | 1167 clist = findpossible(ui, cmd).keys() |
1168 clist.sort() | 1168 clist.sort() |
1169 ui.write("%s\n" % "\n".join(clist)) | 1169 ui.write("%s\n" % "\n".join(clist)) |
1170 | 1170 |
1171 def debugrebuildstate(ui, repo, rev=None): | 1171 def debugrebuildstate(ui, repo, rev=None): |
1172 """rebuild the dirstate as it would look like for the given revision""" | 1172 """rebuild the dirstate as it would look like for the given revision""" |
3147 | 3147 |
3148 norepo = ("clone init version help debugancestor debugcomplete debugdata" | 3148 norepo = ("clone init version help debugancestor debugcomplete debugdata" |
3149 " debugindex debugindexdot") | 3149 " debugindex debugindexdot") |
3150 optionalrepo = ("paths serve debugconfig") | 3150 optionalrepo = ("paths serve debugconfig") |
3151 | 3151 |
3152 def findpossible(cmd): | 3152 def findpossible(ui, cmd): |
3153 """ | 3153 """ |
3154 Return cmd -> (aliases, command table entry) | 3154 Return cmd -> (aliases, command table entry) |
3155 for each matching command. | 3155 for each matching command. |
3156 Return debug commands (or their aliases) only if no normal command matches. | 3156 Return debug commands (or their aliases) only if no normal command matches. |
3157 """ | 3157 """ |
3160 for e in table.keys(): | 3160 for e in table.keys(): |
3161 aliases = e.lstrip("^").split("|") | 3161 aliases = e.lstrip("^").split("|") |
3162 found = None | 3162 found = None |
3163 if cmd in aliases: | 3163 if cmd in aliases: |
3164 found = cmd | 3164 found = cmd |
3165 else: | 3165 elif not ui.config("ui", "strict"): |
3166 for a in aliases: | 3166 for a in aliases: |
3167 if a.startswith(cmd): | 3167 if a.startswith(cmd): |
3168 found = a | 3168 found = a |
3169 break | 3169 break |
3170 if found is not None: | 3170 if found is not None: |
3176 if not choice and debugchoice: | 3176 if not choice and debugchoice: |
3177 choice = debugchoice | 3177 choice = debugchoice |
3178 | 3178 |
3179 return choice | 3179 return choice |
3180 | 3180 |
3181 def findcmd(cmd): | 3181 def findcmd(ui, cmd): |
3182 """Return (aliases, command table entry) for command string.""" | 3182 """Return (aliases, command table entry) for command string.""" |
3183 choice = findpossible(cmd) | 3183 choice = findpossible(ui, cmd) |
3184 | 3184 |
3185 if choice.has_key(cmd): | 3185 if choice.has_key(cmd): |
3186 return choice[cmd] | 3186 return choice[cmd] |
3187 | 3187 |
3188 if len(choice) > 1: | 3188 if len(choice) > 1: |
3213 except fancyopts.getopt.GetoptError, inst: | 3213 except fancyopts.getopt.GetoptError, inst: |
3214 raise ParseError(None, inst) | 3214 raise ParseError(None, inst) |
3215 | 3215 |
3216 if args: | 3216 if args: |
3217 cmd, args = args[0], args[1:] | 3217 cmd, args = args[0], args[1:] |
3218 aliases, i = findcmd(cmd) | 3218 aliases, i = findcmd(ui, cmd) |
3219 cmd = aliases[0] | 3219 cmd = aliases[0] |
3220 defaults = ui.config("defaults", cmd) | 3220 defaults = ui.config("defaults", cmd) |
3221 if defaults: | 3221 if defaults: |
3222 args = defaults.split() + args | 3222 args = defaults.split() + args |
3223 c = list(i[1]) | 3223 c = list(i[1]) |