Mercurial > hg
changeset 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 | c6be93a4c378 |
children | 22148c19f150 |
files | mercurial/cmdutil.py tests/test-alias.t |
diffstat | 2 files changed, 16 insertions(+), 1 deletions(-) [+] |
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:
--- a/tests/test-alias.t Thu Dec 01 20:42:24 2011 +0100 +++ b/tests/test-alias.t Thu Dec 01 15:51:36 2011 -0600 @@ -395,3 +395,11 @@ use "hg help" for the full list of commands or "hg -v" for details [255] +This should show id: + + $ hg --config alias.log='id' log + 000000000000 tip + +This shouldn't: + + $ hg --config alias.log='id' history