##// END OF EJS Templates
histedit: more precise user message when changeset is missing...
histedit: more precise user message when changeset is missing Now that we explicitly detect duplicated changesets, we can explicitly detect missing ones. We cover the same cases as before, some others and we offer a better error message in all cases.

File last commit:

r18325:297bf699 default
r19048:1163ff06 default
Show More
test-merge-tools.t
852 lines | 18.2 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
timeless@mozdev.org
spelling: nonexistent
r17492 $ hg merge -r 2 --config merge-tools.true.executable=nonexistentmergetool
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
timeless@mozdev.org
spelling: nonexistent
r17492 $ hg merge -r 2 --config merge-tools.true.executable=/nonexistent/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
timeless@mozdev.org
spelling: nonexistent
r17492 $ hg merge -r 2 --config merge-patterns.f=true --config merge-tools.true.executable=nonexistentmergetool
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
timeless@mozdev.org
spelling: nonexistent
r17492 $ hg merge -r 2 --config merge-patterns.f=true --config merge-tools.true.executable=/nonexistent/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
Keegan Carruthers-Smith
filemerge: use util.shellquote when calling merge (issue3581)
r17885 Issue3581: Merging a filename that needs to be quoted
Matt Mackall
tests: fix test for issue3581 for vfat on Linux
r17902 (This test doesn't work on Windows filesystems even on Linux, so check
for Unix-like permission)
Keegan Carruthers-Smith
filemerge: use util.shellquote when calling merge (issue3581)
r17885
Matt Mackall
tests: fix test for issue3581 for vfat on Linux
r17902 #if unix-permissions
Keegan Carruthers-Smith
filemerge: use util.shellquote when calling merge (issue3581)
r17885 $ beforemerge
[merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
$ echo "revision 4" > '"; exit 1; echo "'
$ hg commit -Am "revision 4"
adding "; exit 1; echo "
warning: filename contains '"', which is reserved on Windows: '"; exit 1; echo "'
$ hg update -C 1 > /dev/null
$ echo "revision 5" > '"; exit 1; echo "'
$ hg commit -Am "revision 5"
adding "; exit 1; echo "
warning: filename contains '"', which is reserved on Windows: '"; exit 1; echo "'
created new head
$ hg merge --config merge-tools.true.executable="true" -r 4
merging "; exit 1; echo "
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg update -C 1 > /dev/null
Keegan Carruthers-Smith
filemerge: only run test for issue3581 on non-windows environments
r17901 #endif
Keegan Carruthers-Smith
filemerge: use util.shellquote when calling merge (issue3581)
r17885
Matt Mackall
tests: unify test-merge-tools
r12460 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
Mads Kiilerich
merge: make internal merge fail cleanly on symlinks...
r18256
#if symlink
internal merge cannot handle symlinks and shouldn't try:
$ hg update -q -C 1
$ rm f
$ ln -s symlink f
$ hg commit -qm 'f is symlink'
$ hg merge -r 2 --tool internal:merge
merging f
Mads Kiilerich
merge: warn when internal:merge cannot merge symlinks...
r18325 warning: internal:merge cannot merge symlinks for f
Mads Kiilerich
merge: make internal merge fail cleanly on symlinks...
r18256 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]
#endif