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