##// END OF EJS Templates
errors: stop passing non-strings to Abort's constructor...
errors: stop passing non-strings to Abort's constructor The next patch will change `Abort`'s constructor and `__bytes__` functions and they will start assuming that the first argument is the messages as `bytes`. Differential Revision: https://phab.mercurial-scm.org/D9178

File last commit:

r44325:8caec25f default
r46273:a736ab68 default
Show More
test-merge-tools.t
2091 lines | 49.0 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
Boris Feld
test: also deactivate `ui.merge` when testing merge tool...
r40501 $ cat >> $HGRCPATH << EOF
> [ui]
> merge=
Kyle Lippincott
merge: add commands.merge.require-rev to require an argument to hg merge...
r44325 > [commands]
> merge.require-rev=True
Boris Feld
test: also deactivate `ui.merge` when testing merge tool...
r40501 > EOF
Yuya Nishihara
test-merge-tools: create repo directory to free $TESTTMP for temporary files
r38049 $ hg init repo
$ cd repo
Matt Mackall
tests: unify test-merge-tools
r12460
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
Julien Cristau
test: don't put $BINDIR in $PATH for test-merge-tools.t...
r44171 $ PATH="/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
Julien Cristau
test: don't put $BINDIR in $PATH for test-merge-tools.t...
r44171 $ PATH="`pwd`:/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
Julien Cristau
test: don't put $BINDIR in $PATH for test-merge-tools.t...
r44171 $ PATH="`pwd`:/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
hindlemail
filemerge: support specifying a python function to custom merge-tools...
r38052 executable set to python script that succeeds:
$ cat > "$TESTTMP/myworkingmerge.py" <<EOF
> def myworkingmergefn(ui, repo, args, **kwargs):
> return False
> EOF
$ beforemerge
[merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
$ hg merge -r 2 --config merge-tools.true.executable="python:$TESTTMP/myworkingmerge.py:myworkingmergefn"
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
# hg stat
M f
# hg resolve --list
R f
executable set to python script that fails:
$ cat > "$TESTTMP/mybrokenmerge.py" <<EOF
> def mybrokenmergefn(ui, repo, args, **kwargs):
> ui.write(b"some fail message\n")
> return True
> EOF
$ beforemerge
[merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
$ hg merge -r 2 --config merge-tools.true.executable="python:$TESTTMP/mybrokenmerge.py:mybrokenmergefn"
merging f
some fail message
abort: $TESTTMP/mybrokenmerge.py hook failed
[255]
$ aftermerge
# cat f
revision 1
space
# hg stat
? f.orig
# hg resolve --list
U f
executable set to python script that is missing function:
$ beforemerge
[merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
$ hg merge -r 2 --config merge-tools.true.executable="python:$TESTTMP/myworkingmerge.py:missingFunction"
merging f
abort: $TESTTMP/myworkingmerge.py does not have function: missingFunction
[255]
$ aftermerge
# cat f
revision 1
space
# hg stat
? f.orig
# hg resolve --list
U f
executable set to missing python script:
$ beforemerge
[merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
$ hg merge -r 2 --config merge-tools.true.executable="python:$TESTTMP/missingpythonscript.py:mergefn"
merging f
abort: loading python merge script failed: $TESTTMP/missingpythonscript.py
[255]
$ aftermerge
# cat f
revision 1
space
# hg stat
? f.orig
# hg resolve --list
U f
executable set to python script but callable function is missing:
$ beforemerge
[merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
$ hg merge -r 2 --config merge-tools.true.executable="python:$TESTTMP/myworkingmerge.py"
abort: invalid 'python:' syntax: python:$TESTTMP/myworkingmerge.py
[255]
$ aftermerge
# cat f
revision 1
space
# hg stat
# hg resolve --list
U f
executable set to python script but callable function is empty string:
$ beforemerge
[merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
$ hg merge -r 2 --config merge-tools.true.executable="python:$TESTTMP/myworkingmerge.py:"
abort: invalid 'python:' syntax: python:$TESTTMP/myworkingmerge.py:
[255]
$ aftermerge
# cat f
revision 1
space
# hg stat
# hg resolve --list
U f
executable set to python script but callable function is missing and path contains colon:
$ beforemerge
[merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
$ hg merge -r 2 --config merge-tools.true.executable="python:$TESTTMP/some:dir/myworkingmerge.py"
abort: invalid 'python:' syntax: python:$TESTTMP/some:dir/myworkingmerge.py
[255]
$ aftermerge
# cat f
revision 1
space
# hg stat
# hg resolve --list
U f
executable set to python script filename that contains spaces:
$ mkdir -p "$TESTTMP/my path"
$ cat > "$TESTTMP/my path/my working merge with spaces in filename.py" <<EOF
> def myworkingmergefn(ui, repo, args, **kwargs):
> return False
> EOF
$ beforemerge
[merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
$ hg merge -r 2 --config "merge-tools.true.executable=python:$TESTTMP/my path/my working merge with spaces in filename.py:myworkingmergefn"
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
# hg stat
M f
# hg resolve --list
R 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:
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
Kyle Lippincott
filemerge: make last line of prompts <40 english chars (issue6158)...
r42765 file 'f' needs to be resolved.
You can keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved.
What do you want to do? 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
Kyle Lippincott
filemerge: make last line of prompts <40 english chars (issue6158)...
r42765 file 'f' needs to be resolved.
You can keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved.
What do you want to do? 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
Kyle Lippincott
filemerge: make last line of prompts <40 english chars (issue6158)...
r42765 file 'f' needs to be resolved.
You can keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved.
What do you want to do?
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
Kyle Lippincott
filemerge: make last line of prompts <40 english chars (issue6158)...
r42765 file 'f' needs to be resolved.
You can keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved.
What do you want to do?
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
Kyle Lippincott
filemerge: make last line of prompts <40 english chars (issue6158)...
r42765 file 'f' needs to be resolved.
You can keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved.
What do you want to do?
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
Kyle Lippincott
filemerge: make last line of prompts <40 english chars (issue6158)...
r42765 file 'f' needs to be resolved.
You can keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved.
What do you want to do? 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"
Yuya Nishihara
test-merge-tools: create repo directory to free $TESTTMP for temporary files
r38049 output (arg): "$TESTTMP/repo/f"
Kyle Lippincott
filemerge: support passing labels to external merge tools...
r35925 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"
Yuya Nishihara
test-merge-tools: create repo directory to free $TESTTMP for temporary files
r38049 output (arg): "$TESTTMP/repo/f"
Kyle Lippincott
filemerge: support passing labels to external merge tools...
r35925 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
Matt Harbison
tests: stabilize test-merge-tools.t on Windows...
r39219
#else
Match the non-portable filename commits above for test stability
$ hg import --bypass -q - << EOF
> # HG changeset patch
> revision 5
>
> diff --git a/"; exit 1; echo " b/"; exit 1; echo "
> new file mode 100644
> --- /dev/null
> +++ b/"; exit 1; echo "
> @@ -0,0 +1,1 @@
> +revision 5
> EOF
$ hg import --bypass -q - << EOF
> # HG changeset patch
> revision 6
>
> diff --git a/"; exit 1; echo " b/"; exit 1; echo "
> new file mode 100644
> --- /dev/null
> +++ b/"; exit 1; echo "
> @@ -0,0 +1,1 @@
> +revision 6
> EOF
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
Martin von Zweigbergk
tests: demonstrate that no requested merge tool is ignored if missing...
r38986 missingbinary is a merge-tool that doesn't exist:
$ echo "missingbinary.executable=doesnotexist" >> .hg/hgrc
$ beforemerge
[merge-tools]
false.whatever=
true.priority=1
true.executable=cat
missingbinary.executable=doesnotexist
# hg update -C 1
$ hg merge -y -r 2 --config ui.merge=missingbinary
Martin von Zweigbergk
mergetool: warn if ui.merge points to nonexistent tool...
r38987 couldn't find merge tool missingbinary (for pattern f)
Martin von Zweigbergk
tests: demonstrate that no requested merge tool is ignored if missing...
r38986 merging f
Martin von Zweigbergk
mergetool: warn if ui.merge points to nonexistent tool...
r38987 couldn't find merge tool missingbinary (for pattern f)
Martin von Zweigbergk
tests: demonstrate that no requested merge tool is ignored if missing...
r38986 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)
Matt Harbison
tests: stabilize test-merge-tools.t on Windows...
r39219 $ hg update -q -C 1
$ rm f
Mads Kiilerich
merge: make internal merge fail cleanly on symlinks...
r18256
internal merge cannot handle symlinks and shouldn't try:
Matt Harbison
tests: stabilize test-merge-tools.t on Windows...
r39219 #if symlink
Mads Kiilerich
merge: make internal merge fail cleanly on symlinks...
r18256 $ ln -s symlink f
$ hg commit -qm 'f is symlink'
Matt Harbison
tests: stabilize test-merge-tools.t on Windows...
r39219
#else
$ hg import --bypass -q - << EOF
> # HG changeset patch
> f is symlink
>
> diff --git a/f b/f
> old mode 100644
> new mode 120000
> --- a/f
> +++ b/f
> @@ -1,2 +1,1 @@
> -revision 1
> -space
> +symlink
> \ No newline at end of file
> EOF
Resolve 'other [destination] changed f which local [working copy] deleted' prompt
$ hg up -q -C --config ui.interactive=True << EOF
> c
> EOF
#endif
Mads Kiilerich
merge: make internal merge fail cleanly on symlinks...
r18256 $ 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]
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
Yuya Nishihara
test-merge-tools: create repo directory to free $TESTTMP for temporary files
r38049 */f~base.* */f~local.*.txt */f~other.*.txt $TESTTMP/repo/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
Yuya Nishihara
test-merge-tools: create repo directory to free $TESTTMP for temporary files
r38049 $TESTTMP/hgmerge.*/f~base $TESTTMP/hgmerge.*/f~local.txt $TESTTMP/hgmerge.*/f~other.txt $TESTTMP/repo/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
filemerge: show warning if chosen tool has no binary files capability...
r39160 Binary files capability checking
$ hg update -q -C 0
$ python <<EOF
> with open('b', 'wb') as fp:
> fp.write(b'\x00\x01\x02\x03')
> EOF
$ hg add b
$ hg commit -qm "add binary file (#1)"
$ hg update -q -C 0
$ python <<EOF
> with open('b', 'wb') as fp:
> fp.write(b'\x03\x02\x01\x00')
> EOF
$ hg add b
$ hg commit -qm "add binary file (#2)"
By default, binary files capability of internal merge tools is not
checked strictly.
(for merge-patterns, chosen unintentionally)
$ hg merge 9 \
> --config merge-patterns.b=:merge-other \
> --config merge-patterns.re:[a-z]=:other
warning: check merge-patterns configurations, if ':merge-other' for binary file 'b' is unintentional
(see 'hg help merge-tools' for binary files capability)
merging b
warning: b looks like a binary file.
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
[1]
Kyle Lippincott
merge: add commands.merge.require-rev to require an argument to hg merge...
r44325 (Testing that commands.merge.require-rev doesn't break --abort)
FUJIWARA Katsunori
filemerge: show warning if chosen tool has no binary files capability...
r39160 $ hg merge --abort -q
FUJIWARA Katsunori
filemerge: add config knob to check capabilities of internal merge tools...
r39161 (for ui.merge, ignored unintentionally)
$ hg merge 9 \
FUJIWARA Katsunori
filemerge: make capability check for internal tools ignore merge-tools section...
r39302 > --config merge-tools.:other.binary=true \
FUJIWARA Katsunori
filemerge: add config knob to check capabilities of internal merge tools...
r39161 > --config ui.merge=:other
tool :other (for pattern b) can't handle binary
tool true can't handle binary
FUJIWARA Katsunori
filemerge: make capability check for internal tools ignore merge-tools section...
r39302 tool :other can't handle binary
FUJIWARA Katsunori
filemerge: add config knob to check capabilities of internal merge tools...
r39161 tool false can't handle binary
no tool found to merge b
Kyle Lippincott
filemerge: make last line of prompts <40 english chars (issue6158)...
r42765 file 'b' needs to be resolved.
You can keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved.
What do you want to do? u
FUJIWARA Katsunori
filemerge: add config knob to check capabilities of internal merge tools...
r39161 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
[1]
$ hg merge --abort -q
With merge.strict-capability-check=true, binary files capability of
internal merge tools is checked strictly.
$ f --hexdump b
b:
0000: 03 02 01 00 |....|
(for merge-patterns)
$ hg merge 9 --config merge.strict-capability-check=true \
FUJIWARA Katsunori
filemerge: make capability check for internal tools ignore merge-tools section...
r39302 > --config merge-tools.:merge-other.binary=true \
FUJIWARA Katsunori
filemerge: add config knob to check capabilities of internal merge tools...
r39161 > --config merge-patterns.b=:merge-other \
> --config merge-patterns.re:[a-z]=:other
tool :merge-other (for pattern b) can't handle binary
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ f --hexdump b
b:
0000: 00 01 02 03 |....|
$ hg merge --abort -q
(for ui.merge)
$ hg merge 9 --config merge.strict-capability-check=true \
> --config ui.merge=:other
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ f --hexdump b
b:
0000: 00 01 02 03 |....|
$ hg merge --abort -q
Kyle Lippincott
merge-tools: when calling external merge tool, describe the resolve inputs...
r40512 Check that the extra information is printed correctly
$ hg merge 9 \
> --config merge-tools.testecho.executable='echo' \
> --config merge-tools.testecho.args='merge runs here ...' \
> --config merge-tools.testecho.binary=True \
> --config ui.merge=testecho \
> --config ui.pre-merge-tool-output-template='\n{label("extmerge.running_merge_tool", "Running merge tool for {path} ({toolpath}):")}\n{separate("\n", extmerge_section(local), extmerge_section(base), extmerge_section(other))}\n' \
> --config 'templatealias.extmerge_section(sect)="- {pad("{sect.name} ({sect.label})", 20, left=True)}: {revset(sect.node)%"{rev}:{shortest(node,8)} {desc|firstline} {separate(" ", tags, bookmarks, branch)}"}"'
merging b
Matt Harbison
tests: conditonalize a difference in test-merge-tools.t on Windows
r40521 Running merge tool for b ("*/bin/echo.exe"): (glob) (windows !)
Running merge tool for b (*/bin/echo): (glob) (no-windows !)
Kyle Lippincott
merge-tools: when calling external merge tool, describe the resolve inputs...
r40512 - local (working copy): 10:2d1f533d add binary file (#2) tip default
- base (base): -1:00000000 default
- other (merge rev): 9:1e7ad7d7 add binary file (#1) default
merge runs here ...
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
Martin von Zweigbergk
tests: demonstrate that no requested merge tool is ignored if missing...
r38986 missingbinary.executable=doesnotexist
FUJIWARA Katsunori
debugcommands: add debugpickmergetool to examine which merge tool is chosen...
r32256 # 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)
FUJIWARA Katsunori
filemerge: show warning if chosen tool has no binary files capability...
r39160 $ hg manifest -r 8
FUJIWARA Katsunori
debugcommands: add debugpickmergetool to examine which merge tool is chosen...
r32256 f.txt
FUJIWARA Katsunori
filemerge: show warning if chosen tool has no binary files capability...
r39160 $ hg debugpickmergetool -r 8
FUJIWARA Katsunori
debugcommands: add debugpickmergetool to examine which merge tool is chosen...
r32256 f.txt = true
#if symlink
(symlink causes chosing :prompt)
$ hg debugpickmergetool -r 6d00b3726f6e
f = :prompt
FUJIWARA Katsunori
filemerge: add config knob to check capabilities of internal merge tools...
r39161 (by default, it is assumed that no internal merge tools has symlinks
capability)
$ hg debugpickmergetool \
> -r 6d00b3726f6e \
FUJIWARA Katsunori
filemerge: make capability check for internal tools ignore merge-tools section...
r39302 > --config merge-tools.:merge-other.symlink=true \
FUJIWARA Katsunori
filemerge: add config knob to check capabilities of internal merge tools...
r39161 > --config merge-patterns.f=:merge-other \
> --config merge-patterns.re:[f]=:merge-local \
> --config merge-patterns.re:[a-z]=:other
f = :prompt
$ hg debugpickmergetool \
> -r 6d00b3726f6e \
FUJIWARA Katsunori
filemerge: make capability check for internal tools ignore merge-tools section...
r39302 > --config merge-tools.:other.symlink=true \
FUJIWARA Katsunori
filemerge: add config knob to check capabilities of internal merge tools...
r39161 > --config ui.merge=:other
f = :prompt
(with strict-capability-check=true, actual symlink capabilities are
checked striclty)
$ hg debugpickmergetool --config merge.strict-capability-check=true \
> -r 6d00b3726f6e \
FUJIWARA Katsunori
filemerge: make capability check for internal tools ignore merge-tools section...
r39302 > --config merge-tools.:merge-other.symlink=true \
FUJIWARA Katsunori
filemerge: add config knob to check capabilities of internal merge tools...
r39161 > --config merge-patterns.f=:merge-other \
> --config merge-patterns.re:[f]=:merge-local \
> --config merge-patterns.re:[a-z]=:other
f = :other
$ hg debugpickmergetool --config merge.strict-capability-check=true \
> -r 6d00b3726f6e \
> --config ui.merge=:other
f = :other
FUJIWARA Katsunori
filemerge: make capability check for internal tools ignore merge-tools section...
r39302 $ hg debugpickmergetool --config merge.strict-capability-check=true \
> -r 6d00b3726f6e \
> --config merge-tools.:merge-other.symlink=true \
> --config ui.merge=:merge-other
f = :prompt
FUJIWARA Katsunori
debugcommands: add debugpickmergetool to examine which merge tool is chosen...
r32256 #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
Yuya Nishihara
test-merge-tools: create repo directory to free $TESTTMP for temporary files
r38049
$ cd ..