diff mercurial/cmdutil.py @ 15600:195dbd1cef0c stable 2.0.1

alias: shortcut command matching show shadowing works properly (issue3104) An alias for 'log' was stored in the same command table as '^log|history'. If the hash function happens to give the latter first, the alias is effectively ignored when matching 'log'.
author Matt Mackall <mpm@selenic.com>
date Thu, 01 Dec 2011 15:51:36 -0600
parents cd6f10dccf16
children 36d7a0c7505f cfc15cbecc5e
line wrap: on
line diff
--- a/mercurial/cmdutil.py	Thu Dec 01 20:42:24 2011 +0100
+++ b/mercurial/cmdutil.py	Thu Dec 01 15:51:36 2011 -0600
@@ -23,7 +23,14 @@
     """
     choice = {}
     debugchoice = {}
-    for e in table.keys():
+
+    if cmd in table:
+        # short-circuit exact matches, "log" alias beats "^log|history"
+        keys = [cmd]
+    else:
+        keys = table.keys()
+
+    for e in keys:
         aliases = parsealiases(e)
         found = None
         if cmd in aliases: