Mercurial > hg
view tests/test-merge-tools @ 8589:3edf133dcb5a
dirstate: skip step 3 in walk if nothing new will match
nothing will ever match on match.never
nothing new will match on match.exact (all found in step 1)
nothing new will match on match.match when
there is no pattern and
there is no direcory in pats
author | Simon Heimberg <simohe@besonet.ch> |
---|---|
date | Thu, 14 May 2009 19:54:26 +0200 |
parents | 9a4fe59b1eca |
children | 0941ee76489e |
line wrap: on
line source
#!/bin/sh # test merge-tools configuration - mostly exercising filemerge.py unset HGMERGE # make sure HGMERGE doesn't interfere with the test hg init echo "# revision 0" echo "revision 0" > f echo "space" >> f hg commit -Am "revision 0" -d "1000000 0" echo "# revision 1" echo "revision 1" > f echo "space" >> f hg commit -Am "revision 1" -d "1000000 0" hg update 0 > /dev/null echo "# revision 2" echo "revision 2" > f echo "space" >> f hg commit -Am "revision 2" -d "1000000 0" hg update 0 > /dev/null echo "# revision 3 - simple to merge" echo "revision 3" >> f hg commit -Am "revision 3" -d "1000000 0" echo "[merge-tools]" > .hg/hgrc echo beforemerge() { cat .hg/hgrc echo "# hg update -C 1" hg update -C 1 > /dev/null } aftermerge() { echo "# cat f" cat f echo "# hg stat" hg stat rm -f f.orig echo } domerge() { beforemerge echo "# hg merge $*" hg merge $* aftermerge } echo echo Tool selection echo echo "# default is internal merge:" beforemerge echo "# hg merge -r 2" PATH=$BINDIR hg merge -r 2 aftermerge echo "# simplest hgrc using false for merge:" echo "false.whatever=" >> .hg/hgrc domerge -r 2 echo "# true with higher .priority gets precedence:" echo "true.priority=1" >> .hg/hgrc domerge -r 2 echo "# unless lowered on command line:" domerge -r 2 --config merge-tools.true.priority=-7 echo "# or false set higher on command line:" domerge -r 2 --config merge-tools.false.priority=117 echo "# or true.executable not found in PATH:" domerge -r 2 --config merge-tools.true.executable=nonexistingmergetool echo "# or true.executable with bogus path:" domerge -r 2 --config merge-tools.true.executable=/bin/nonexistingmergetool echo "# but true.executable set to cat found in PATH works:" echo "true.executable=cat" >> .hg/hgrc domerge -r 2 echo "# and true.executable set to cat with path works:" domerge -r 2 --config merge-tools.true.executable=cat echo echo Tool selection and merge-patterns echo echo "# merge-patterns specifies new tool false:" domerge -r 2 --config merge-patterns.f=false echo "# merge-patterns specifies executable not found in PATH and gets warning:" domerge -r 2 --config merge-patterns.f=true --config merge-tools.true.executable=nonexistingmergetool echo "# merge-patterns specifies executable with bogus path and gets warning:" domerge -r 2 --config merge-patterns.f=true --config merge-tools.true.executable=/bin/nonexistingmergetool echo echo ui.merge overrules priority echo echo "# ui.merge specifies false:" domerge -r 2 --config ui.merge=false echo "# ui.merge specifies internal:fail:" domerge -r 2 --config ui.merge=internal:fail echo "# ui.merge specifies internal:local:" domerge -r 2 --config ui.merge=internal:local echo "# ui.merge specifies internal:other:" domerge -r 2 --config ui.merge=internal:other echo "# ui.merge specifies internal:other but is overruled by pattern for false:" domerge -r 2 --config ui.merge=internal:other --config merge-patterns.f=false echo echo Premerge echo echo "# Default is silent simplemerge:" domerge -r 3 echo "# .premerge=True is same:" domerge -r 3 --config merge-tools.true.premerge=True echo "# .premerge=False executes merge-tool:" domerge -r 3 --config merge-tools.true.premerge=False echo echo Tool execution echo echo '# set tools.args explicit to include $base $local $other $output:' # default '$local $base $other' beforemerge hg merge -r 2 --config merge-tools.true.executable=head --config merge-tools.true.args='$base $local $other $output' \ | sed 's,==> .* <==,==> ... <==,g' aftermerge echo '# Merge with "echo mergeresult > $local":' beforemerge hg merge -r 2 --config merge-tools.true.executable=echo --config merge-tools.true.args='mergeresult > $local' aftermerge echo '# - and $local is the file f:' beforemerge hg merge -r 2 --config merge-tools.true.executable=echo --config merge-tools.true.args='mergeresult > f' aftermerge echo '# Merge with "echo mergeresult > $output" - the variable is a bit magic:' beforemerge hg merge -r 2 --config merge-tools.true.executable=echo --config merge-tools.true.args='mergeresult > $output' aftermerge echo echo Merge post-processing echo echo "# cat is a bad merge-tool and doesn't change:" domerge -y -r 2 --config merge-tools.true.checkchanged=1