Mercurial > hg
view tests/test-merge-internal-tools-pattern @ 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 | a3668330f14a |
children | 4c94b6d0fb1c |
line wrap: on
line source
#!/bin/sh # make sure that the internal merge tools (internal:fail, internal:local, and # internal:other) are used when matched by a merge-pattern in hgrc unset HGMERGE # make sure HGMERGE doesn't interfere with the test hg init echo "# initial file contents" echo "line 1" > f echo "line 2" >> f echo "line 3" >> f hg commit -Am "revision 0" -d "1000000 0" cat f echo "# branch 1: editing line 1" sed 's/line 1/first line/' f > f.new mv f.new f hg commit -Am "edited first line" -d "1000000 0" echo "# branch 2: editing line 3" hg update 0 sed 's/line 3/third line/' f > f.new mv f.new f hg commit -Am "edited third line" -d "1000000 0" echo "# merge using internal:fail tool" echo "[merge-patterns]" > .hg/hgrc echo "* = internal:fail" >> .hg/hgrc hg merge cat f hg stat echo "# merge using internal:local tool" hg update -C 2 sed 's/internal:fail/internal:local/' .hg/hgrc > .hg/hgrc.new mv .hg/hgrc.new .hg/hgrc hg merge cat f hg stat echo "# merge using internal:other tool" hg update -C 2 sed 's/internal:local/internal:other/' .hg/hgrc > .hg/hgrc.new mv .hg/hgrc.new .hg/hgrc hg merge cat f hg stat echo "# merge using default tool" hg update -C 2 rm .hg/hgrc hg merge cat f hg stat