##// END OF EJS Templates
filemerge: make the 'local' path match the format that 'base' and 'other' use...
filemerge: make the 'local' path match the format that 'base' and 'other' use If we pass a separate '$output' arg to the merge tool, we produce four files: local, base, other, and output. In this situation, 'output' will be the original filename, 'base' and 'other' are temporary files, and previously 'local' would be the backup file (so if 'output' was foo.txt, 'local' would be foo.txt.orig). This change makes it so that 'local' follows the same pattern as 'base' and 'other' - it will be a temporary file either in the `experimental.mergetempdirprefix`-controlled directory with a name like foo~local.txt, or in the normal system-wide temp dir with a name like foo~local.RaNd0m.txt. For the cases where the merge tool does not use an '$output' arg, 'local' is still the destination filename, and 'base' and 'other' are unchanged. The hope is that this is much easier for people to reason about; rather than having a tool like Meld pop up with three panes, one of them with the filename "foo.txt.orig", one with the filename "foo.txt", and one with "foo~other.StuFf2.txt", we can (when the merge temp dir stuff is enabled) make it show up as "foo~local.txt", "foo.txt" and "foo~other.txt", respectively. This also opens the door to future customization, such as getting the operation-provided labels and a hash prefix into the filenames (so we see something like "foo~dest.abc123", "foo.txt", and "foo~src.d4e5f6"). Differential Revision: https://phab.mercurial-scm.org/D2889

File last commit:

r37095:1e30a26a default
r37095:1e30a26a default
Show More
test-merge-tools.t
1670 lines | 37.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
Pierre-Yves David
test-merge-tools: introduce a "revision 4" that merges with conflict...
r22029
revision 4 - hard to merge
$ hg update 0 > /dev/null
$ echo "revision 4" > f
$ hg commit -Am "revision 4"
created new head
Matt Mackall
tests: unify test-merge-tools
r12460 $ 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
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 > echo "# hg resolve --list"
> hg resolve --list
Matt Mackall
tests: unify test-merge-tools
r12460 > 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
timeless@mozdev.org
test-merge-tools: include /usr/sbin in path for sysctl (issue4813)...
r26168 $ PATH="$BINDIR:/usr/sbin" $PYTHON "$BINDIR"/hg merge -r 2
Matt Mackall
tests: unify test-merge-tools
r12460 merging f
Siddharth Agarwal
simplemerge: move conflict warning message to filemerge...
r26614 warning: conflicts while merging f! (edit, 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
Pulkit Goyal
merge: add `--abort` flag which can abort the merge...
r35722 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
Matt Mackall
tests: unify test-merge-tools
r12460 [1]
$ aftermerge
# cat f
Kostia Balytskyi
conflicts: make spacing consistent in conflict markers...
r30460 <<<<<<< working copy: ef83787e2614 - test: revision 1
Matt Mackall
tests: unify test-merge-tools
r12460 revision 1
=======
revision 2
Kostia Balytskyi
conflicts: make spacing consistent in conflict markers...
r30460 >>>>>>> merge rev: 0185f4e0cf02 - test: revision 2
Matt Mackall
tests: unify test-merge-tools
r12460 space
# hg stat
M f
? f.orig
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 # hg resolve --list
U f
Matt Mackall
tests: unify test-merge-tools
r12460
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
Pulkit Goyal
merge: add `--abort` flag which can abort the merge...
r35722 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' 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
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 # hg resolve --list
U f
Matt Mackall
tests: unify test-merge-tools
r12460
Matt Mackall
tests: fix portability issue with test-merge-tools...
r24809 #if unix-permissions
Mads Kiilerich
tests: test findexe() access check fixed in 58f96703a9ab
r15545 unexecutable file in $PATH shouldn't be found:
Matt Mackall
tests: fix portability issue with test-merge-tools...
r24809 $ echo "echo fail" > false
Mads Kiilerich
tests: test findexe() access check fixed in 58f96703a9ab
r15545 $ hg up -qC 1
timeless@mozdev.org
test-merge-tools: include /usr/sbin in path for sysctl (issue4813)...
r26168 $ PATH="`pwd`:$BINDIR:/usr/sbin" $PYTHON "$BINDIR"/hg merge -r 2
Mads Kiilerich
tests: test findexe() access check fixed in 58f96703a9ab
r15545 merging f
Siddharth Agarwal
simplemerge: move conflict warning message to filemerge...
r26614 warning: conflicts while merging f! (edit, then use 'hg resolve --mark')
Mads Kiilerich
tests: test findexe() access check fixed in 58f96703a9ab
r15545 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
Pulkit Goyal
merge: add `--abort` flag which can abort the merge...
r35722 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
Mads Kiilerich
tests: test findexe() access check fixed in 58f96703a9ab
r15545 [1]
$ rm false
Matt Mackall
tests: fix portability issue with test-merge-tools...
r24809 #endif
Mads Kiilerich
tests: test findexe() access check fixed in 58f96703a9ab
r15545 executable directory in $PATH shouldn't be found:
$ mkdir false
$ hg up -qC 1
timeless@mozdev.org
test-merge-tools: include /usr/sbin in path for sysctl (issue4813)...
r26168 $ PATH="`pwd`:$BINDIR:/usr/sbin" $PYTHON "$BINDIR"/hg merge -r 2
Mads Kiilerich
tests: test findexe() access check fixed in 58f96703a9ab
r15545 merging f
Siddharth Agarwal
simplemerge: move conflict warning message to filemerge...
r26614 warning: conflicts while merging f! (edit, then use 'hg resolve --mark')
Mads Kiilerich
tests: test findexe() access check fixed in 58f96703a9ab
r15545 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
Pulkit Goyal
merge: add `--abort` flag which can abort the merge...
r35722 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
Mads Kiilerich
tests: test findexe() access check fixed in 58f96703a9ab
r15545 [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
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 # hg resolve --list
R f
Matt Mackall
tests: unify test-merge-tools
r12460
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
Pulkit Goyal
merge: add `--abort` flag which can abort the merge...
r35722 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' 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
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 # hg resolve --list
U f
Matt Mackall
tests: unify test-merge-tools
r12460
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
Pulkit Goyal
merge: add `--abort` flag which can abort the merge...
r35722 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' 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
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 # hg resolve --list
U f
Matt Mackall
tests: unify test-merge-tools
r12460
Augie Fackler
merge-tools: allow marking a mergetool as completely disabled...
r26730 or true set to disabled:
$ beforemerge
[merge-tools]
false.whatever=
true.priority=1
# hg update -C 1
$ hg merge -r 2 --config merge-tools.true.disabled=yes
merging f
merging f failed!
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
Pulkit Goyal
merge: add `--abort` flag which can abort the merge...
r35722 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
Augie Fackler
merge-tools: allow marking a mergetool as completely disabled...
r26730 [1]
$ aftermerge
# cat f
revision 1
space
# hg stat
M f
? f.orig
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 # hg resolve --list
U f
Augie Fackler
merge-tools: allow marking a mergetool as completely disabled...
r26730
Matt Mackall
tests: unify test-merge-tools
r12460 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
Pulkit Goyal
merge: add `--abort` flag which can abort the merge...
r35722 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' 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
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 # hg resolve --list
U f
Matt Mackall
tests: unify test-merge-tools
r12460
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
Pulkit Goyal
merge: add `--abort` flag which can abort the merge...
r35722 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' 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
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 # hg resolve --list
U f
Matt Mackall
tests: unify test-merge-tools
r12460
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
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 # hg resolve --list
R f
Matt Mackall
tests: unify test-merge-tools
r12460
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
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 # hg resolve --list
R f
Matt Mackall
tests: unify test-merge-tools
r12460
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:
Matt Mackall
tests: avoid writing files to HGTMP
r19264 $ echo 'echo "custom merge tool"' > .hg/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' \
Matt Mackall
tests: avoid writing files to HGTMP
r19264 > --config merge-tools.true.args=.hg/merge.sh \
Adrian Buehlmann
test-merge-tools: adapt for Windows
r16967 > 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
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 # hg resolve --list
R f
Greg Ward
merge: expand environment variables and ~/ in tool.executable...
r15264
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
Pulkit Goyal
merge: add `--abort` flag which can abort the merge...
r35722 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' 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
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 # hg resolve --list
U f
Matt Mackall
tests: unify test-merge-tools
r12460
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
FUJIWARA Katsunori
filemerge: make warning message more i18n friendly...
r32254 couldn't find merge tool true (for pattern f)
Matt Mackall
tests: unify test-merge-tools
r12460 merging f
FUJIWARA Katsunori
filemerge: make warning message more i18n friendly...
r32254 couldn't find merge tool true (for pattern f)
Matt Mackall
tests: unify test-merge-tools
r12460 merging f failed!
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
Pulkit Goyal
merge: add `--abort` flag which can abort the merge...
r35722 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' 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
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 # hg resolve --list
U f
Matt Mackall
tests: unify test-merge-tools
r12460
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
FUJIWARA Katsunori
filemerge: make warning message more i18n friendly...
r32254 couldn't find merge tool true (for pattern f)
Matt Mackall
tests: unify test-merge-tools
r12460 merging f
FUJIWARA Katsunori
filemerge: make warning message more i18n friendly...
r32254 couldn't find merge tool true (for pattern f)
Matt Mackall
tests: unify test-merge-tools
r12460 merging f failed!
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
Pulkit Goyal
merge: add `--abort` flag which can abort the merge...
r35722 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' 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
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 # hg resolve --list
U f
Matt Mackall
tests: unify test-merge-tools
r12460
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
Pulkit Goyal
merge: add `--abort` flag which can abort the merge...
r35722 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' 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
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 # hg resolve --list
U f
Matt Mackall
tests: unify test-merge-tools
r12460
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
Pulkit Goyal
merge: add `--abort` flag which can abort the merge...
r35722 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' 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
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 # hg resolve --list
U f
Matt Mackall
tests: unify test-merge-tools
r12460
Mads Kiilerich
filemerge: introduce :x as short version of internal:x merge tool name...
r22706 ui.merge specifies :local (without internal prefix):
Matt Mackall
tests: unify test-merge-tools
r12460
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
Mads Kiilerich
filemerge: introduce :x as short version of internal:x merge tool name...
r22706 $ hg merge -r 2 --config ui.merge=: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
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 # hg resolve --list
R f
Matt Mackall
tests: unify test-merge-tools
r12460
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
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 # hg resolve --list
R f
Matt Mackall
tests: unify test-merge-tools
r12460
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
FUJIWARA Katsunori
filemerge: show warning about choice of :prompt only at an actual fallback...
r32253 keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for f? u
Siddharth Agarwal
filemerge: default regular prompts to 'leave unresolved' (BC)...
r27164 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
Pulkit Goyal
merge: add `--abort` flag which can abort the merge...
r35722 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
Siddharth Agarwal
filemerge: default regular prompts to 'leave unresolved' (BC)...
r27164 [1]
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
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 # hg resolve --list
Siddharth Agarwal
filemerge: default regular prompts to 'leave unresolved' (BC)...
r27164 U f
Matt Mackall
tests: unify test-merge-tools
r12460
Siddharth Agarwal
filemerge: add a 'leave unresolved' option to regular prompts...
r27162 ui.merge specifies :prompt, with 'leave unresolved' chosen
$ beforemerge
[merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
$ hg merge -r 2 --config ui.merge=:prompt --config ui.interactive=True << EOF
> u
> EOF
FUJIWARA Katsunori
filemerge: show warning about choice of :prompt only at an actual fallback...
r32253 keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for f? u
Siddharth Agarwal
filemerge: add a 'leave unresolved' option to regular prompts...
r27162 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
Pulkit Goyal
merge: add `--abort` flag which can abort the merge...
r35722 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
Siddharth Agarwal
filemerge: add a 'leave unresolved' option to regular prompts...
r27162 [1]
$ aftermerge
# cat f
revision 1
space
# hg stat
M f
# hg resolve --list
U f
Siddharth Agarwal
filemerge: treat EOF at prompt as fail, not abort...
r26898 prompt with EOF
$ beforemerge
[merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
$ hg merge -r 2 --config ui.merge=internal:prompt --config ui.interactive=true
FUJIWARA Katsunori
filemerge: show warning about choice of :prompt only at an actual fallback...
r32253 keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for f?
Siddharth Agarwal
filemerge: treat EOF at prompt as fail, not abort...
r26898 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
Pulkit Goyal
merge: add `--abort` flag which can abort the merge...
r35722 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
Siddharth Agarwal
filemerge: treat EOF at prompt as fail, not abort...
r26898 [1]
$ aftermerge
# cat f
revision 1
space
# hg stat
M f
# hg resolve --list
U f
$ hg resolve --all --config ui.merge=internal:prompt --config ui.interactive=true
FUJIWARA Katsunori
filemerge: show warning about choice of :prompt only at an actual fallback...
r32253 keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for f?
Siddharth Agarwal
filemerge: treat EOF at prompt as fail, not abort...
r26898 [1]
$ aftermerge
# cat f
revision 1
space
# hg stat
M f
? f.orig
# hg resolve --list
U f
Siddharth Agarwal
resolve: don't abort when file is missing...
r26899 $ rm f
$ hg resolve --all --config ui.merge=internal:prompt --config ui.interactive=true
FUJIWARA Katsunori
filemerge: show warning about choice of :prompt only at an actual fallback...
r32253 keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for f?
Siddharth Agarwal
resolve: don't abort when file is missing...
r26899 [1]
$ aftermerge
# cat f
revision 1
space
# hg stat
M f
# hg resolve --list
U f
$ hg resolve --all --config ui.merge=internal:prompt
FUJIWARA Katsunori
filemerge: show warning about choice of :prompt only at an actual fallback...
r32253 keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for f? u
Siddharth Agarwal
filemerge: default regular prompts to 'leave unresolved' (BC)...
r27164 [1]
Siddharth Agarwal
resolve: don't abort when file is missing...
r26899 $ aftermerge
# cat f
revision 1
space
# hg stat
M f
? f.orig
# hg resolve --list
Siddharth Agarwal
filemerge: default regular prompts to 'leave unresolved' (BC)...
r27164 U f
Siddharth Agarwal
resolve: don't abort when file is missing...
r26899
Matt Mackall
tests: unify test-merge-tools
r12460 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
Pulkit Goyal
merge: add `--abort` flag which can abort the merge...
r35722 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' 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
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 # hg resolve --list
U f
Matt Mackall
tests: unify test-merge-tools
r12460
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
FUJIWARA Katsunori
filemerge: add internal merge tool to dump files forcibly...
r32255 check that internal:dump doesn't dump files if premerge runs
successfully
$ beforemerge
[merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
$ hg merge -r 3 --config ui.merge=internal:dump
merging f
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
revision 3
# hg stat
M f
# hg resolve --list
R f
check that internal:forcedump dumps files, even if local and other can
be merged easily
$ beforemerge
[merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
$ hg merge -r 3 --config ui.merge=internal:forcedump
merging f
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
Pulkit Goyal
merge: add `--abort` flag which can abort the merge...
r35722 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
FUJIWARA Katsunori
filemerge: add internal merge tool to dump files forcibly...
r32255 [1]
$ aftermerge
# cat f
revision 1
space
# hg stat
M f
? f.base
? f.local
? f.orig
? f.other
# hg resolve --list
U f
$ cat f.base
revision 0
space
$ cat f.local
revision 1
space
$ cat f.other
revision 0
space
revision 3
$ rm -f f.base f.local f.other
Matt Mackall
tests: unify test-merge-tools
r12460 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
Pulkit Goyal
merge: add `--abort` flag which can abort the merge...
r35722 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' 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
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 # hg resolve --list
U f
Matt Mackall
tests: unify test-merge-tools
r12460
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
Pulkit Goyal
merge: add `--abort` flag which can abort the merge...
r35722 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' 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
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 # hg resolve --list
U f
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
Pulkit Goyal
merge: add `--abort` flag which can abort the merge...
r35722 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' 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
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 # hg resolve --list
U f
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
Mads Kiilerich
update: introduce --tool for controlling the merge tool...
r21552 update is a merge ...
FUJIWARA Katsunori
context: write dirstate out explicitly after marking files as clean...
r25753 (this also tests that files reverted with '--rev REV' are treated as
"modified", even if none of mode, size and timestamp of them isn't
changed on the filesystem (see also issue4583))
$ cat >> $HGRCPATH <<EOF
> [fakedirstatewritetime]
> # emulate invoking dirstate.write() via repo.status()
> # at 2000-01-01 00:00
> fakenow = 200001010000
> EOF
Mads Kiilerich
update: introduce --tool for controlling the merge tool...
r21552 $ beforemerge
[merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
Martin von Zweigbergk
test-merge-tools: fix flaky test by avoiding debugsetparents...
r24121 $ hg update -q 0
FUJIWARA Katsunori
revert: apply normallookup on reverted file if size isn't changed (issue4583)...
r24843 $ f -s f
f: size=17
$ touch -t 200001010000 f
FUJIWARA Katsunori
context: write dirstate out explicitly after marking files as clean...
r25753 $ hg debugrebuildstate
$ cat >> $HGRCPATH <<EOF
> [extensions]
> fakedirstatewritetime = $TESTDIR/fakedirstatewritetime.py
> EOF
Martin von Zweigbergk
test-merge-tools: fix flaky test by avoiding debugsetparents...
r24121 $ hg revert -q -r 1 .
FUJIWARA Katsunori
context: write dirstate out explicitly after marking files as clean...
r25753 $ cat >> $HGRCPATH <<EOF
> [extensions]
> fakedirstatewritetime = !
> EOF
FUJIWARA Katsunori
revert: apply normallookup on reverted file if size isn't changed (issue4583)...
r24843 $ f -s f
f: size=17
$ touch -t 200001010000 f
$ hg status f
M f
Mads Kiilerich
update: introduce --tool for controlling the merge tool...
r21552 $ hg update -r 2
merging f
revision 1
space
revision 0
space
revision 2
space
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
$ aftermerge
# cat f
revision 1
space
# hg stat
M f
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 # hg resolve --list
R f
Mads Kiilerich
update: introduce --tool for controlling the merge tool...
r21552
update should also have --tool
$ beforemerge
[merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
Martin von Zweigbergk
test-merge-tools: fix flaky test by avoiding debugsetparents...
r24121 $ hg update -q 0
FUJIWARA Katsunori
revert: apply normallookup on reverted file if size isn't changed (issue4583)...
r24843 $ f -s f
f: size=17
$ touch -t 200001010000 f
FUJIWARA Katsunori
context: write dirstate out explicitly after marking files as clean...
r25753 $ hg debugrebuildstate
$ cat >> $HGRCPATH <<EOF
> [extensions]
> fakedirstatewritetime = $TESTDIR/fakedirstatewritetime.py
> EOF
Martin von Zweigbergk
test-merge-tools: fix flaky test by avoiding debugsetparents...
r24121 $ hg revert -q -r 1 .
FUJIWARA Katsunori
context: write dirstate out explicitly after marking files as clean...
r25753 $ cat >> $HGRCPATH <<EOF
> [extensions]
> fakedirstatewritetime = !
> EOF
FUJIWARA Katsunori
revert: apply normallookup on reverted file if size isn't changed (issue4583)...
r24843 $ f -s f
f: size=17
$ touch -t 200001010000 f
$ hg status f
M f
Mads Kiilerich
update: introduce --tool for controlling the merge tool...
r21552 $ hg update -r 2 --tool false
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
[1]
$ aftermerge
# cat f
revision 1
space
# hg stat
M f
? f.orig
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 # hg resolve --list
U f
Mads Kiilerich
update: introduce --tool for controlling the merge tool...
r21552
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
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 # hg resolve --list
R f
Matt Mackall
tests: unify test-merge-tools
r12460
.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
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 # hg resolve --list
R f
Matt Mackall
tests: unify test-merge-tools
r12460
.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
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 # hg resolve --list
R f
Matt Mackall
tests: unify test-merge-tools
r12460
Pierre-Yves David
mergetools: add a test for premerge --keep...
r22030 premerge=keep keeps conflict markers in:
$ beforemerge
[merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
$ hg merge -r 4 --config merge-tools.true.premerge=keep
merging f
Kostia Balytskyi
conflicts: make spacing consistent in conflict markers...
r30460 <<<<<<< working copy: ef83787e2614 - test: revision 1
Pierre-Yves David
mergetools: add a test for premerge --keep...
r22030 revision 1
space
=======
revision 4
Simon Farnsworth
merge: add conflict labels to merge command...
r30062 >>>>>>> merge rev: 81448d39c9a0 - test: revision 4
Pierre-Yves David
mergetools: add a test for premerge --keep...
r22030 revision 0
space
revision 4
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ aftermerge
# cat f
Kostia Balytskyi
conflicts: make spacing consistent in conflict markers...
r30460 <<<<<<< working copy: ef83787e2614 - test: revision 1
Pierre-Yves David
mergetools: add a test for premerge --keep...
r22030 revision 1
space
=======
revision 4
Simon Farnsworth
merge: add conflict labels to merge command...
r30062 >>>>>>> merge rev: 81448d39c9a0 - test: revision 4
Pierre-Yves David
mergetools: add a test for premerge --keep...
r22030 # hg stat
M f
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 # hg resolve --list
R f
Pierre-Yves David
mergetools: add a test for premerge --keep...
r22030
Pierre-Yves David
merge-tools: add a `premerge=keep-merge3` config option...
r22032 premerge=keep-merge3 keeps conflict markers with base content:
$ beforemerge
[merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
$ hg merge -r 4 --config merge-tools.true.premerge=keep-merge3
merging f
Kostia Balytskyi
conflicts: make spacing consistent in conflict markers...
r30460 <<<<<<< working copy: ef83787e2614 - test: revision 1
Pierre-Yves David
merge-tools: add a `premerge=keep-merge3` config option...
r22032 revision 1
space
||||||| base
revision 0
space
=======
revision 4
Simon Farnsworth
merge: add conflict labels to merge command...
r30062 >>>>>>> merge rev: 81448d39c9a0 - test: revision 4
Pierre-Yves David
merge-tools: add a `premerge=keep-merge3` config option...
r22032 revision 0
space
revision 4
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ aftermerge
# cat f
Kostia Balytskyi
conflicts: make spacing consistent in conflict markers...
r30460 <<<<<<< working copy: ef83787e2614 - test: revision 1
Pierre-Yves David
merge-tools: add a `premerge=keep-merge3` config option...
r22032 revision 1
space
||||||| base
revision 0
space
=======
revision 4
Simon Farnsworth
merge: add conflict labels to merge command...
r30062 >>>>>>> merge rev: 81448d39c9a0 - test: revision 4
Pierre-Yves David
merge-tools: add a `premerge=keep-merge3` config option...
r22032 # hg stat
M f
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 # hg resolve --list
R f
Pierre-Yves David
merge-tools: add a `premerge=keep-merge3` config option...
r22032
Kyle Lippincott
filemerge: support passing labels to external merge tools...
r35925 premerge=keep respects ui.mergemarkers=basic:
$ beforemerge
[merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
$ hg merge -r 4 --config merge-tools.true.premerge=keep --config ui.mergemarkers=basic
merging f
<<<<<<< working copy
revision 1
space
=======
revision 4
>>>>>>> merge rev
revision 0
space
revision 4
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ aftermerge
# cat f
<<<<<<< working copy
revision 1
space
=======
revision 4
>>>>>>> merge rev
# hg stat
M f
# hg resolve --list
R f
premerge=keep ignores ui.mergemarkers=basic if true.mergemarkers=detailed:
$ beforemerge
[merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
$ hg merge -r 4 --config merge-tools.true.premerge=keep \
> --config ui.mergemarkers=basic \
> --config merge-tools.true.mergemarkers=detailed
merging f
<<<<<<< working copy: ef83787e2614 - test: revision 1
revision 1
space
=======
revision 4
>>>>>>> merge rev: 81448d39c9a0 - test: revision 4
revision 0
space
revision 4
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ aftermerge
# cat f
<<<<<<< working copy: ef83787e2614 - test: revision 1
revision 1
space
=======
revision 4
>>>>>>> merge rev: 81448d39c9a0 - test: revision 4
# hg stat
M f
# hg resolve --list
R f
premerge=keep respects ui.mergemarkertemplate instead of
true.mergemarkertemplate if true.mergemarkers=basic:
$ beforemerge
[merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
$ hg merge -r 4 --config merge-tools.true.premerge=keep \
> --config ui.mergemarkertemplate='uitmpl {rev}' \
> --config merge-tools.true.mergemarkertemplate='tooltmpl {short(node)}'
merging f
<<<<<<< working copy: uitmpl 1
revision 1
space
=======
revision 4
>>>>>>> merge rev: uitmpl 4
revision 0
space
revision 4
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ aftermerge
# cat f
<<<<<<< working copy: uitmpl 1
revision 1
space
=======
revision 4
>>>>>>> merge rev: uitmpl 4
# hg stat
M f
# hg resolve --list
R f
premerge=keep respects true.mergemarkertemplate instead of
true.mergemarkertemplate if true.mergemarkers=detailed:
$ beforemerge
[merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
$ hg merge -r 4 --config merge-tools.true.premerge=keep \
> --config ui.mergemarkertemplate='uitmpl {rev}' \
> --config merge-tools.true.mergemarkertemplate='tooltmpl {short(node)}' \
> --config merge-tools.true.mergemarkers=detailed
merging f
<<<<<<< working copy: tooltmpl ef83787e2614
revision 1
space
=======
revision 4
>>>>>>> merge rev: tooltmpl 81448d39c9a0
revision 0
space
revision 4
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ aftermerge
# cat f
<<<<<<< working copy: tooltmpl ef83787e2614
revision 1
space
=======
revision 4
>>>>>>> merge rev: tooltmpl 81448d39c9a0
# hg stat
M f
# hg resolve --list
R f
Pierre-Yves David
mergetools: add a test for premerge --keep...
r22030
Matt Mackall
tests: unify test-merge-tools
r12460 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
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 # hg resolve --list
R 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
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 # hg resolve --list
R 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
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 # hg resolve --list
R 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
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 # hg resolve --list
R f
Matt Mackall
tests: unify test-merge-tools
r12460
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
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 # hg resolve --list
R f
Matt Mackall
tests: unify test-merge-tools
r12460
Kyle Lippincott
filemerge: support passing labels to external merge tools...
r35925 Merge using a tool that supports labellocal, labelother, and labelbase, checking
that they're quoted properly as well. This is using the default 'basic'
mergemarkers even though ui.mergemarkers is 'detailed', so it's ignoring both
mergemarkertemplate settings:
$ beforemerge
[merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
$ cat <<EOF > printargs_merge_tool
> while test \$# -gt 0; do echo arg: \"\$1\"; shift; done
> EOF
$ hg --config merge-tools.true.executable='sh' \
> --config merge-tools.true.args='./printargs_merge_tool ll:$labellocal lo: $labelother lb:$labelbase": "$base' \
> --config merge-tools.true.mergemarkertemplate='tooltmpl {short(node)}' \
> --config ui.mergemarkertemplate='uitmpl {rev}' \
> --config ui.mergemarkers=detailed \
> merge -r 2
merging f
arg: "ll:working copy"
arg: "lo:"
arg: "merge rev"
Matt Harbison
test-merge-tools: stabilize for Windows...
r36071 arg: "lb:base: */f~base.*" (glob)
Kyle Lippincott
filemerge: support passing labels to external merge tools...
r35925 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ rm -f 'printargs_merge_tool'
Kyle Lippincott
filemerge: use a single temp dir instead of temp files...
r37017 Same test with experimental.mergetempdirprefix set:
$ beforemerge
[merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
$ cat <<EOF > printargs_merge_tool
> while test \$# -gt 0; do echo arg: \"\$1\"; shift; done
> EOF
$ hg --config experimental.mergetempdirprefix=$TESTTMP/hgmerge. \
> --config merge-tools.true.executable='sh' \
> --config merge-tools.true.args='./printargs_merge_tool ll:$labellocal lo: $labelother lb:$labelbase": "$base' \
> --config merge-tools.true.mergemarkertemplate='tooltmpl {short(node)}' \
> --config ui.mergemarkertemplate='uitmpl {rev}' \
> --config ui.mergemarkers=detailed \
> merge -r 2
merging f
arg: "ll:working copy"
arg: "lo:"
arg: "merge rev"
Matt Harbison
test-merge-tools: stabilize for Windows...
r37041 arg: "lb:base: */hgmerge.*/f~base" (glob)
Kyle Lippincott
filemerge: use a single temp dir instead of temp files...
r37017 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ rm -f 'printargs_merge_tool'
Kyle Lippincott
filemerge: support passing labels to external merge tools...
r35925 Merge using a tool that supports labellocal, labelother, and labelbase, checking
that they're quoted properly as well. This is using 'detailed' mergemarkers,
even though ui.mergemarkers is 'basic', and using the tool's
mergemarkertemplate:
$ beforemerge
[merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
$ cat <<EOF > printargs_merge_tool
> while test \$# -gt 0; do echo arg: \"\$1\"; shift; done
> EOF
$ hg --config merge-tools.true.executable='sh' \
> --config merge-tools.true.args='./printargs_merge_tool ll:$labellocal lo: $labelother lb:$labelbase": "$base' \
> --config merge-tools.true.mergemarkers=detailed \
> --config merge-tools.true.mergemarkertemplate='tooltmpl {short(node)}' \
> --config ui.mergemarkertemplate='uitmpl {rev}' \
> --config ui.mergemarkers=basic \
> merge -r 2
merging f
arg: "ll:working copy: tooltmpl ef83787e2614"
arg: "lo:"
arg: "merge rev: tooltmpl 0185f4e0cf02"
Matt Harbison
test-merge-tools: stabilize for Windows...
r36071 arg: "lb:base: */f~base.*" (glob)
Kyle Lippincott
filemerge: support passing labels to external merge tools...
r35925 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ rm -f 'printargs_merge_tool'
The merge tool still gets labellocal and labelother as 'basic' even when
premerge=keep is used and has 'detailed' markers:
$ beforemerge
[merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
$ cat <<EOF > mytool
> echo labellocal: \"\$1\"
> echo labelother: \"\$2\"
> echo "output (arg)": \"\$3\"
> echo "output (contents)":
> cat "\$3"
> EOF
$ hg --config merge-tools.true.executable='sh' \
> --config merge-tools.true.args='mytool $labellocal $labelother $output' \
> --config merge-tools.true.premerge=keep \
> --config merge-tools.true.mergemarkertemplate='tooltmpl {short(node)}' \
> --config ui.mergemarkertemplate='uitmpl {rev}' \
> --config ui.mergemarkers=detailed \
> merge -r 2
merging f
labellocal: "working copy"
labelother: "merge rev"
output (arg): "$TESTTMP/f"
output (contents):
<<<<<<< working copy: uitmpl 1
revision 1
=======
revision 2
>>>>>>> merge rev: uitmpl 2
space
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ rm -f 'mytool'
premerge=keep uses the *tool's* mergemarkertemplate if tool's
mergemarkers=detailed; labellocal and labelother also use the tool's template
$ beforemerge
[merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
$ cat <<EOF > mytool
> echo labellocal: \"\$1\"
> echo labelother: \"\$2\"
> echo "output (arg)": \"\$3\"
> echo "output (contents)":
> cat "\$3"
> EOF
$ hg --config merge-tools.true.executable='sh' \
> --config merge-tools.true.args='mytool $labellocal $labelother $output' \
> --config merge-tools.true.premerge=keep \
> --config merge-tools.true.mergemarkers=detailed \
> --config merge-tools.true.mergemarkertemplate='tooltmpl {short(node)}' \
> --config ui.mergemarkertemplate='uitmpl {rev}' \
> --config ui.mergemarkers=detailed \
> merge -r 2
merging f
labellocal: "working copy: tooltmpl ef83787e2614"
labelother: "merge rev: tooltmpl 0185f4e0cf02"
output (arg): "$TESTTMP/f"
output (contents):
<<<<<<< working copy: tooltmpl ef83787e2614
revision 1
=======
revision 2
>>>>>>> merge rev: tooltmpl 0185f4e0cf02
space
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ rm -f 'mytool'
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 5" > '"; exit 1; echo "'
$ hg commit -Am "revision 5"
adding "; exit 1; echo "
warning: filename contains '"', which is reserved on Windows: '"; exit 1; echo "'
Pierre-Yves David
test-merge-tools: introduce a "revision 4" that merges with conflict...
r22029 $ hg update -C 1 > /dev/null
$ echo "revision 6" > '"; exit 1; echo "'
$ hg commit -Am "revision 6"
adding "; exit 1; echo "
warning: filename contains '"', which is reserved on Windows: '"; exit 1; echo "'
Keegan Carruthers-Smith
filemerge: use util.shellquote when calling merge (issue3581)
r17885 created new head
Pierre-Yves David
test-merge-tools: introduce a "revision 4" that merges with conflict...
r22029 $ hg merge --config merge-tools.true.executable="true" -r 5
Keegan Carruthers-Smith
filemerge: use util.shellquote when calling merge (issue3581)
r17885 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
Pulkit Goyal
merge: add `--abort` flag which can abort the merge...
r35722 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' 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
Siddharth Agarwal
test-merge-tools.t: add 'hg resolve --list' output to tests...
r26897 # hg resolve --list
U f
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
filemerge: switch the default name for internal tools from internal:x to :x
r22707 warning: internal :merge cannot merge symlinks for f
Siddharth Agarwal
simplemerge: move conflict warning message to filemerge...
r26614 warning: conflicts while merging f! (edit, then use 'hg resolve --mark')
Mads Kiilerich
merge: make internal merge fail cleanly on symlinks...
r18256 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
Pulkit Goyal
merge: add `--abort` flag which can abort the merge...
r35722 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
Mads Kiilerich
merge: make internal merge fail cleanly on symlinks...
r18256 [1]
#endif
Mads Kiilerich
merge: use original file extension for temporary files...
r30538
Verify naming of temporary files and that extension is preserved:
$ hg update -q -C 1
$ hg mv f f.txt
$ hg ci -qm "f.txt"
$ hg update -q -C 2
$ hg merge -y -r tip --tool echo --config merge-tools.echo.args='$base $local $other $output'
merging f and f.txt to f.txt
Kyle Lippincott
filemerge: make the 'local' path match the format that 'base' and 'other' use...
r37095 */f~base.* */f~local.*.txt */f~other.*.txt $TESTTMP/f.txt (glob)
Mads Kiilerich
merge: use original file extension for temporary files...
r30538 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
FUJIWARA Katsunori
debugcommands: add debugpickmergetool to examine which merge tool is chosen...
r32256
Kyle Lippincott
filemerge: use a single temp dir instead of temp files...
r37017 Verify naming of temporary files and that extension is preserved
(experimental.mergetempdirprefix version):
$ hg update -q -C 1
$ hg mv f f.txt
$ hg ci -qm "f.txt"
$ hg update -q -C 2
$ hg merge -y -r tip --tool echo \
> --config merge-tools.echo.args='$base $local $other $output' \
> --config experimental.mergetempdirprefix=$TESTTMP/hgmerge.
merging f and f.txt to f.txt
Kyle Lippincott
filemerge: make the 'local' path match the format that 'base' and 'other' use...
r37095 $TESTTMP/hgmerge.*/f~base $TESTTMP/hgmerge.*/f~local.txt $TESTTMP/hgmerge.*/f~other.txt $TESTTMP/f.txt (glob)
Kyle Lippincott
filemerge: use a single temp dir instead of temp files...
r37017 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
FUJIWARA Katsunori
debugcommands: add debugpickmergetool to examine which merge tool is chosen...
r32256 Check that debugpicktool examines which merge tool is chosen for
specified file as expected
$ beforemerge
[merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
(default behavior: checking files in the working parent context)
$ hg manifest
f
$ hg debugpickmergetool
f = true
(-X/-I and file patterns limmit examination targets)
$ hg debugpickmergetool -X f
$ hg debugpickmergetool unknown
unknown: no such file in rev ef83787e2614
(--changedelete emulates merging change and delete)
$ hg debugpickmergetool --changedelete
f = :prompt
(-r REV causes checking files in specified revision)
$ hg manifest -r tip
f.txt
$ hg debugpickmergetool -r tip
f.txt = true
#if symlink
(symlink causes chosing :prompt)
$ hg debugpickmergetool -r 6d00b3726f6e
f = :prompt
#endif
(--verbose shows some configurations)
$ hg debugpickmergetool --tool foobar -v
with --tool 'foobar'
f = foobar
$ HGMERGE=false hg debugpickmergetool -v
with HGMERGE='false'
f = false
$ hg debugpickmergetool --config ui.merge=false -v
with ui.merge='false'
f = false
(--debug shows errors detected intermediately)
$ hg debugpickmergetool --config merge-patterns.f=true --config merge-tools.true.executable=nonexistentmergetool --debug f
couldn't find merge tool true (for pattern f)
couldn't find merge tool true
f = false