Mercurial > hg
view tests/test-log @ 12039:18e1e7520b67 stable
alias: make shadowing behavior more consistent (issue2054)
Currently, given an alias like the following:
[alias]
summary = summary --remote
The alias might be executed - or it might not - depending on the order
of the cmdtable dict.
This happens because cmdalias gets assigned back to the cmdtable like so:
cmdtable['summary'] = ...
Yet '^summary|sum' is still in the table, so which one cmdutil.findcmd()
chooses isn't deterministic.
This patch makes cmdalias assign back to '^summary|sum'. It uses the same
cmdtable key lookup that extensions.wrapcommand() does.
author | Brodie Rao <brodie@bitheap.org> |
---|---|
date | Sat, 21 Aug 2010 22:48:14 -0400 |
parents | efbc09fdefd8 |
children | dbb98d8fbcaf 28ddf67198b2 |
line wrap: on
line source
#!/bin/sh hg init a cd a echo a > a hg ci -Ama -d '1 0' hg cp a b hg ci -mb -d '2 0' mkdir dir hg mv b dir hg ci -mc -d '3 0' hg mv a b echo a > d hg add d hg ci -md -d '4 0' hg mv dir/b e hg ci -me -d '5 0' hg log a echo % -f, directory hg log -f dir echo % -f, but no args hg log -f echo % one rename hg log -vf a echo % many renames hg log -vf e echo % log -pf dir/b hg log -pf dir/b echo % log -vf dir/b hg log -vf dir/b echo '% log copies with --copies' hg log -vC --template '{rev} {file_copies}\n' echo '% log copies switch without --copies, with old filecopy template' hg log -v --template '{rev} {file_copies_switch%filecopy}\n' echo '% log copies switch with --copies' hg log -vC --template '{rev} {file_copies_switch}\n' echo '% log copies with hardcoded style and with --style=default' hg log -vC -r4 hg log -vC -r4 --style=default echo % log copies, non-linear manifest hg up -C 3 hg mv dir/b e echo foo > foo hg ci -Ame2 -d '6 0' hg log -v --template '{rev} {file_copies}\n' -r 5 echo % log copies, execute bit set chmod +x e hg ci -me3 -d '7 0' hg log -v --template '{rev} {file_copies}\n' -r 6 echo '% log -p d' hg log -pv d # log --follow tests hg init ../follow cd ../follow echo base > base hg ci -Ambase -d '1 0' echo r1 >> base hg ci -Amr1 -d '1 0' echo r2 >> base hg ci -Amr2 -d '1 0' hg up -C 1 echo b1 > b1 hg ci -Amb1 -d '1 0' echo % log -f hg log -f hg up -C 0 echo b2 > b2 hg ci -Amb2 -d '1 0' echo % log -f -r 1:tip hg log -f -r 1:tip hg up -C 3 hg merge tip echo % log -r . with two parents hg log -r . hg ci -mm12 -d '1 0' echo % log -r . with one parent hg log -r . echo postm >> b1 hg ci -Amb1.1 -d'1 0' echo % log --follow-first hg log --follow-first echo % log -P 2 hg log -P 2 echo '% log -r tip -p --git' hg log -r tip -p --git echo '% log -r ""' hg log -r '' echo '% log -r <some unknown node id>' hg log -r 1000000000000000000000000000000000000000 echo '% log -k r1' hg log -k r1 echo '% log -d -1' hg log -d -1 echo '% log -p -l2 --color=always' hg --config extensions.color= --config color.mode=ansi \ log -p -l2 --color=always echo '% log -r tip --stat' hg log -r tip --stat cd .. hg init usertest cd usertest echo a > a hg ci -A -m "a" -u "User One <user1@example.org>" echo b > b hg ci -A -m "b" -u "User Two <user2@example.org>" hg log -u "User One <user1@example.org>" hg log -u "user1" -u "user2" hg log -u "user3" cd .. hg init branches cd branches echo a > a hg ci -A -m "commit on default" hg branch test echo b > b hg ci -A -m "commit on test" hg up default echo c > c hg ci -A -m "commit on default" hg up test echo c > c hg ci -A -m "commit on test" echo '% log -b default' hg log -b default echo '% log -b test' hg log -b test echo '% log -b dummy' hg log -b dummy echo '% log -b .' hg log -b . echo '% log -b default -b test' hg log -b default -b test echo '% log -b default -b .' hg log -b default -b . echo '% log -b . -b test' hg log -b . -b test echo '% log -b 2' hg log -b 2 echo '% log -p --cwd dir (in subdir)' mkdir dir hg log -p --cwd dir echo '% log -p -R repo' cd dir hg log -p -R .. ../a exit 0