##// END OF EJS Templates
spelling: existence
spelling: existence

File last commit:

r16972:5efe9c6a default
r17491:fd28974f default
Show More
test-merge-tools.t
806 lines | 16.8 KiB | text/troff | Tads3Lexer
/ tests / test-merge-tools.t
Matt Mackall
tests: unify test-merge-tools
r12460 test merge-tools configuration - mostly exercising filemerge.py
$ unset HGMERGE # make sure HGMERGE doesn't interfere with the test
$ hg init
revision 0
$ echo "revision 0" > f
$ echo "space" >> f
$ hg commit -Am "revision 0"
adding f
revision 1
$ echo "revision 1" > f
$ echo "space" >> f
$ hg commit -Am "revision 1"
$ hg update 0 > /dev/null
revision 2
$ echo "revision 2" > f
$ echo "space" >> f
$ hg commit -Am "revision 2"
created new head
$ hg update 0 > /dev/null
revision 3 - simple to merge
$ echo "revision 3" >> f
$ hg commit -Am "revision 3"
created new head
$ echo "[merge-tools]" > .hg/hgrc
Mads Kiilerich
tests: cleanup of echo statements left over from test conversion
r15243
Matt Mackall
tests: unify test-merge-tools
r12460 $ 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
> }
Tool selection
default is internal merge:
$ beforemerge
[merge-tools]
# hg update -C 1
hg merge -r 2
override $PATH to ensure hgmerge not visible; use $PYTHON in case we're
running from a devel copy, not a temp installation
$ PATH="$BINDIR" $PYTHON "$BINDIR"/hg merge -r 2
merging f
warning: conflicts during merge.
Matt Mackall
merge: give a special message for internal:merge failure (issue3105)
r15501 merging f incomplete! (edit conflicts, then use 'hg resolve --mark')
Matt Mackall
tests: unify test-merge-tools
r12460 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
[1]
$ aftermerge
# cat f
<<<<<<< local
revision 1
=======
revision 2
>>>>>>> other
space
# hg stat
M f
? f.orig
simplest hgrc using false for merge:
$ echo "false.whatever=" >> .hg/hgrc
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ beforemerge
Matt Mackall
tests: unify test-merge-tools
r12460 [merge-tools]
false.whatever=
# hg update -C 1
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ hg merge -r 2
Matt Mackall
tests: unify test-merge-tools
r12460 merging f
merging f failed!
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 [1]
$ aftermerge
Matt Mackall
tests: unify test-merge-tools
r12460 # cat f
revision 1
space
# hg stat
M f
? f.orig
Mads Kiilerich
tests: test findexe() access check fixed in 58f96703a9ab
r15545 unexecutable file in $PATH shouldn't be found:
$ touch false
$ hg up -qC 1
$ PATH="`pwd`:$BINDIR" $PYTHON "$BINDIR"/hg merge -r 2
merging f
warning: conflicts during merge.
merging f incomplete! (edit conflicts, then use 'hg resolve --mark')
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
[1]
$ rm false
executable directory in $PATH shouldn't be found:
$ mkdir false
$ hg up -qC 1
$ PATH="`pwd`:$BINDIR" $PYTHON "$BINDIR"/hg merge -r 2
merging f
warning: conflicts during merge.
merging f incomplete! (edit conflicts, then use 'hg resolve --mark')
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
[1]
$ rmdir false
Matt Mackall
tests: unify test-merge-tools
r12460 true with higher .priority gets precedence:
$ echo "true.priority=1" >> .hg/hgrc
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ beforemerge
Matt Mackall
tests: unify test-merge-tools
r12460 [merge-tools]
false.whatever=
true.priority=1
# hg update -C 1
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ hg merge -r 2
Matt Mackall
tests: unify test-merge-tools
r12460 merging f
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ aftermerge
Matt Mackall
tests: unify test-merge-tools
r12460 # cat f
revision 1
space
# hg stat
M f
unless lowered on command line:
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ beforemerge
Matt Mackall
tests: unify test-merge-tools
r12460 [merge-tools]
false.whatever=
true.priority=1
# hg update -C 1
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ hg merge -r 2 --config merge-tools.true.priority=-7
Matt Mackall
tests: unify test-merge-tools
r12460 merging f
merging f failed!
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 [1]
$ aftermerge
Matt Mackall
tests: unify test-merge-tools
r12460 # cat f
revision 1
space
# hg stat
M f
? f.orig
or false set higher on command line:
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ beforemerge
Matt Mackall
tests: unify test-merge-tools
r12460 [merge-tools]
false.whatever=
true.priority=1
# hg update -C 1
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ hg merge -r 2 --config merge-tools.false.priority=117
Matt Mackall
tests: unify test-merge-tools
r12460 merging f
merging f failed!
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 [1]
$ aftermerge
Matt Mackall
tests: unify test-merge-tools
r12460 # cat f
revision 1
space
# hg stat
M f
? f.orig
or true.executable not found in PATH:
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ beforemerge
Matt Mackall
tests: unify test-merge-tools
r12460 [merge-tools]
false.whatever=
true.priority=1
# hg update -C 1
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ hg merge -r 2 --config merge-tools.true.executable=nonexistingmergetool
Matt Mackall
tests: unify test-merge-tools
r12460 merging f
merging f failed!
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 [1]
$ aftermerge
Matt Mackall
tests: unify test-merge-tools
r12460 # cat f
revision 1
space
# hg stat
M f
? f.orig
or true.executable with bogus path:
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ beforemerge
Matt Mackall
tests: unify test-merge-tools
r12460 [merge-tools]
false.whatever=
true.priority=1
# hg update -C 1
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ hg merge -r 2 --config merge-tools.true.executable=/nonexisting/mergetool
Matt Mackall
tests: unify test-merge-tools
r12460 merging f
merging f failed!
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 [1]
$ aftermerge
Matt Mackall
tests: unify test-merge-tools
r12460 # cat f
revision 1
space
# hg stat
M f
? f.orig
but true.executable set to cat found in PATH works:
$ echo "true.executable=cat" >> .hg/hgrc
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ beforemerge
Matt Mackall
tests: unify test-merge-tools
r12460 [merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ hg merge -r 2
Mads Kiilerich
util: flush stdout before calling external processes...
r13439 merging f
Matt Mackall
tests: unify test-merge-tools
r12460 revision 1
space
revision 0
space
revision 2
space
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ aftermerge
Matt Mackall
tests: unify test-merge-tools
r12460 # cat f
revision 1
space
# hg stat
M f
and true.executable set to cat with path works:
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ beforemerge
Matt Mackall
tests: unify test-merge-tools
r12460 [merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ hg merge -r 2 --config merge-tools.true.executable=cat
Mads Kiilerich
util: flush stdout before calling external processes...
r13439 merging f
Matt Mackall
tests: unify test-merge-tools
r12460 revision 1
space
revision 0
space
revision 2
space
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ aftermerge
Matt Mackall
tests: unify test-merge-tools
r12460 # cat f
revision 1
space
# hg stat
M f
Mads Kiilerich
tests: add some missing #if's / hghave requirements...
r16972 #if unix-permissions
Greg Ward
merge: expand environment variables and ~/ in tool.executable...
r15264 environment variables in true.executable are handled:
Adrian Buehlmann
test-merge-tools: adapt for Windows
r16967 $ echo 'echo "custom merge tool"' > "$HGTMP/merge.sh"
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ beforemerge
Greg Ward
merge: expand environment variables and ~/ in tool.executable...
r15264 [merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
Adrian Buehlmann
test-merge-tools: adapt for Windows
r16967 $ hg --config merge-tools.true.executable='sh' \
> --config merge-tools.true.args="$HGTMP/merge.sh" \
> merge -r 2
Greg Ward
merge: expand environment variables and ~/ in tool.executable...
r15264 merging f
custom merge tool
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ aftermerge
Greg Ward
merge: expand environment variables and ~/ in tool.executable...
r15264 # cat f
revision 1
space
# hg stat
M f
Mads Kiilerich
tests: add some missing #if's / hghave requirements...
r16972 #endif
Matt Mackall
tests: unify test-merge-tools
r12460 Tool selection and merge-patterns
merge-patterns specifies new tool false:
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ beforemerge
Matt Mackall
tests: unify test-merge-tools
r12460 [merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ hg merge -r 2 --config merge-patterns.f=false
Matt Mackall
tests: unify test-merge-tools
r12460 merging f
merging f failed!
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 [1]
$ aftermerge
Matt Mackall
tests: unify test-merge-tools
r12460 # cat f
revision 1
space
# hg stat
M f
? f.orig
merge-patterns specifies executable not found in PATH and gets warning:
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ beforemerge
Matt Mackall
tests: unify test-merge-tools
r12460 [merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ hg merge -r 2 --config merge-patterns.f=true --config merge-tools.true.executable=nonexistingmergetool
Matt Mackall
tests: unify test-merge-tools
r12460 couldn't find merge tool true specified for f
merging f
merging f failed!
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 [1]
$ aftermerge
Matt Mackall
tests: unify test-merge-tools
r12460 # cat f
revision 1
space
# hg stat
M f
? f.orig
merge-patterns specifies executable with bogus path and gets warning:
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ beforemerge
Matt Mackall
tests: unify test-merge-tools
r12460 [merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ hg merge -r 2 --config merge-patterns.f=true --config merge-tools.true.executable=/nonexisting/mergetool
Matt Mackall
tests: unify test-merge-tools
r12460 couldn't find merge tool true specified for f
merging f
merging f failed!
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 [1]
$ aftermerge
Matt Mackall
tests: unify test-merge-tools
r12460 # cat f
revision 1
space
# hg stat
M f
? f.orig
ui.merge overrules priority
ui.merge specifies false:
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ beforemerge
Matt Mackall
tests: unify test-merge-tools
r12460 [merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ hg merge -r 2 --config ui.merge=false
Matt Mackall
tests: unify test-merge-tools
r12460 merging f
merging f failed!
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 [1]
$ aftermerge
Matt Mackall
tests: unify test-merge-tools
r12460 # cat f
revision 1
space
# hg stat
M f
? f.orig
ui.merge specifies internal:fail:
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ beforemerge
Matt Mackall
tests: unify test-merge-tools
r12460 [merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ hg merge -r 2 --config ui.merge=internal:fail
Matt Mackall
tests: unify test-merge-tools
r12460 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 [1]
$ aftermerge
Matt Mackall
tests: unify test-merge-tools
r12460 # cat f
revision 1
space
# hg stat
M f
ui.merge specifies internal:local:
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ beforemerge
Matt Mackall
tests: unify test-merge-tools
r12460 [merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ hg merge -r 2 --config ui.merge=internal:local
Matt Mackall
tests: unify test-merge-tools
r12460 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ aftermerge
Matt Mackall
tests: unify test-merge-tools
r12460 # cat f
revision 1
space
# hg stat
M f
ui.merge specifies internal:other:
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ beforemerge
Matt Mackall
tests: unify test-merge-tools
r12460 [merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ hg merge -r 2 --config ui.merge=internal:other
Matt Mackall
tests: unify test-merge-tools
r12460 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ aftermerge
Matt Mackall
tests: unify test-merge-tools
r12460 # cat f
revision 2
space
# hg stat
M f
ui.merge specifies internal:prompt:
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ beforemerge
Matt Mackall
tests: unify test-merge-tools
r12460 [merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ hg merge -r 2 --config ui.merge=internal:prompt
Matt Mackall
tests: unify test-merge-tools
r12460 no tool found to merge f
keep (l)ocal or take (o)ther? l
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ aftermerge
Matt Mackall
tests: unify test-merge-tools
r12460 # cat f
revision 1
space
# hg stat
M f
ui.merge specifies internal:dump:
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ beforemerge
Matt Mackall
tests: unify test-merge-tools
r12460 [merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ hg merge -r 2 --config ui.merge=internal:dump
Matt Mackall
tests: unify test-merge-tools
r12460 merging f
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 [1]
$ aftermerge
Matt Mackall
tests: unify test-merge-tools
r12460 # cat f
revision 1
space
# hg stat
M f
? f.base
? f.local
? f.orig
? f.other
f.base:
$ cat f.base
revision 0
space
f.local:
$ cat f.local
revision 1
space
f.other:
$ cat f.other
revision 2
space
$ rm f.base f.local f.other
ui.merge specifies internal:other but is overruled by pattern for false:
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ beforemerge
Matt Mackall
tests: unify test-merge-tools
r12460 [merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ hg merge -r 2 --config ui.merge=internal:other --config merge-patterns.f=false
Matt Mackall
tests: unify test-merge-tools
r12460 merging f
merging f failed!
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 [1]
$ aftermerge
Matt Mackall
tests: unify test-merge-tools
r12460 # cat f
revision 1
space
# hg stat
M f
? f.orig
Premerge
Steve Borho
merge: implement --tool arguments using new ui.forcemerge configurable...
r12788 ui.merge specifies internal:other but is overruled by --tool=false
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ beforemerge
Steve Borho
merge: implement --tool arguments using new ui.forcemerge configurable...
r12788 [merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ hg merge -r 2 --config ui.merge=internal:other --tool=false
Steve Borho
merge: implement --tool arguments using new ui.forcemerge configurable...
r12788 merging f
merging f failed!
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 [1]
$ aftermerge
Steve Borho
merge: implement --tool arguments using new ui.forcemerge configurable...
r12788 # cat f
revision 1
space
# hg stat
M f
? f.orig
Mads Kiilerich
tests: cleanup of echo statements left over from test conversion
r15243
Steve Borho
merge: implement --tool arguments using new ui.forcemerge configurable...
r12788 HGMERGE specifies internal:other but is overruled by --tool=false
$ HGMERGE=internal:other ; export HGMERGE
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ beforemerge
Steve Borho
merge: implement --tool arguments using new ui.forcemerge configurable...
r12788 [merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ hg merge -r 2 --tool=false
Steve Borho
merge: implement --tool arguments using new ui.forcemerge configurable...
r12788 merging f
merging f failed!
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 [1]
$ aftermerge
Steve Borho
merge: implement --tool arguments using new ui.forcemerge configurable...
r12788 # cat f
revision 1
space
# hg stat
M f
? f.orig
Mads Kiilerich
tests: cleanup of echo statements left over from test conversion
r15243
Steve Borho
merge: implement --tool arguments using new ui.forcemerge configurable...
r12788 $ unset HGMERGE # make sure HGMERGE doesn't interfere with remaining tests
Matt Mackall
tests: unify test-merge-tools
r12460 Default is silent simplemerge:
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ beforemerge
Matt Mackall
tests: unify test-merge-tools
r12460 [merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ hg merge -r 3
Matt Mackall
tests: unify test-merge-tools
r12460 merging f
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ aftermerge
Matt Mackall
tests: unify test-merge-tools
r12460 # cat f
revision 1
space
revision 3
# hg stat
M f
.premerge=True is same:
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ beforemerge
Matt Mackall
tests: unify test-merge-tools
r12460 [merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ hg merge -r 3 --config merge-tools.true.premerge=True
Matt Mackall
tests: unify test-merge-tools
r12460 merging f
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ aftermerge
Matt Mackall
tests: unify test-merge-tools
r12460 # cat f
revision 1
space
revision 3
# hg stat
M f
.premerge=False executes merge-tool:
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ beforemerge
Matt Mackall
tests: unify test-merge-tools
r12460 [merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ hg merge -r 3 --config merge-tools.true.premerge=False
Mads Kiilerich
util: flush stdout before calling external processes...
r13439 merging f
Matt Mackall
tests: unify test-merge-tools
r12460 revision 1
space
revision 0
space
revision 0
space
revision 3
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ aftermerge
Matt Mackall
tests: unify test-merge-tools
r12460 # cat f
revision 1
space
# hg stat
M f
Tool execution
Mads Kiilerich
tests: cleanup of echo statements left over from test conversion
r15243 set tools.args explicit to include $base $local $other $output:
Matt Mackall
tests: unify test-merge-tools
r12460 $ beforemerge
[merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
$ hg merge -r 2 --config merge-tools.true.executable=head --config merge-tools.true.args='$base $local $other $output' \
> | sed 's,==> .* <==,==> ... <==,g'
Mads Kiilerich
util: flush stdout before calling external processes...
r13439 merging f
Matt Mackall
tests: unify test-merge-tools
r12460 ==> ... <==
revision 0
space
==> ... <==
revision 1
space
==> ... <==
revision 2
space
==> ... <==
revision 1
space
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ aftermerge
# cat f
revision 1
space
# hg stat
M f
Mads Kiilerich
tests: cleanup of echo statements left over from test conversion
r15243
Merge with "echo mergeresult > $local":
Matt Mackall
tests: unify test-merge-tools
r12460 $ beforemerge
[merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
$ hg merge -r 2 --config merge-tools.true.executable=echo --config merge-tools.true.args='mergeresult > $local'
merging f
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ aftermerge
# cat f
mergeresult
# hg stat
M f
Mads Kiilerich
tests: cleanup of echo statements left over from test conversion
r15243
- and $local is the file f:
Matt Mackall
tests: unify test-merge-tools
r12460 $ beforemerge
[merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
$ hg merge -r 2 --config merge-tools.true.executable=echo --config merge-tools.true.args='mergeresult > f'
merging f
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ aftermerge
# cat f
mergeresult
# hg stat
M f
Mads Kiilerich
tests: cleanup of echo statements left over from test conversion
r15243
Merge with "echo mergeresult > $output" - the variable is a bit magic:
Matt Mackall
tests: unify test-merge-tools
r12460 $ beforemerge
[merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
$ hg merge -r 2 --config merge-tools.true.executable=echo --config merge-tools.true.args='mergeresult > $output'
merging f
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ aftermerge
# cat f
mergeresult
# hg stat
M f
Merge using tool with a path that must be quoted:
$ beforemerge
[merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
$ cat <<EOF > 'my merge tool'
> cat "\$1" "\$2" "\$3" > "\$4"
> EOF
Adrian Buehlmann
test-merge-tools: adapt for Windows
r16967 $ hg --config merge-tools.true.executable='sh' \
> --config merge-tools.true.args='"./my merge tool" $base $local $other $output' \
> merge -r 2
Matt Mackall
tests: unify test-merge-tools
r12460 merging f
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ rm -f 'my merge tool'
$ aftermerge
# cat f
revision 0
space
revision 1
space
revision 2
space
# hg stat
M f
Merge post-processing
cat is a bad merge-tool and doesn't change:
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ beforemerge
Matt Mackall
tests: unify test-merge-tools
r12460 [merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 $ hg merge -y -r 2 --config merge-tools.true.checkchanged=1
Mads Kiilerich
util: flush stdout before calling external processes...
r13439 merging f
Matt Mackall
tests: unify test-merge-tools
r12460 revision 1
space
revision 0
space
revision 2
space
output file f appears unchanged
was merge successful (yn)? n
merging f failed!
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
Adrian Buehlmann
test-merge-tools: inline pointless domerge function...
r16961 [1]
$ aftermerge
Matt Mackall
tests: unify test-merge-tools
r12460 # cat f
revision 1
space
# hg stat
M f
? f.orig