Mercurial > hg
changeset 1739:57de7e1a81d2
AmbiguousCommand is raised too soon.
Right now, hg raises AmbiguousCommand as soon as it finds two
commands/aliases that start with the substring it's searching for, even
though it may still find a full match later on.
This is a bit hard to hit on purpose, because hg checks the list of
commands in whatever order is returned by table.keys(), which will
change when you add an alias to a command. You should be able to hit it
by adding an alias "u" to the "identify" command - not that that makes a
lot of sense...
author | Alexis S. L. Carvalho <alexis@cecm.usp.br> |
---|---|
date | Fri, 17 Feb 2006 17:41:23 -0600 |
parents | f293ad87f928 |
children | 813f9f5fe837 a1e6e02e9d05 7d83a351a936 |
files | mercurial/commands.py |
diffstat | 1 files changed, 8 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/commands.py Fri Feb 17 17:41:18 2006 -0600 +++ b/mercurial/commands.py Fri Feb 17 17:41:23 2006 -0600 @@ -2548,17 +2548,20 @@ def find(cmd): """Return (aliases, command table entry) for command string.""" choice = None + count = 0 for e in table.keys(): aliases = e.lstrip("^").split("|") if cmd in aliases: return aliases, table[e] for a in aliases: if a.startswith(cmd): - if choice: - raise AmbiguousCommand(cmd) - else: - choice = aliases, table[e] - break + count += 1 + choice = aliases, table[e] + break + + if count > 1: + raise AmbiguousCommand(cmd) + if choice: return choice