Patchwork merge: print status message before launching external merge tool

login
register
mail settings
Submitter via Mercurial-devel
Date Feb. 9, 2017, 11:09 p.m.
Message ID <93d94750f3abee5b9798.1486681799@martinvonz.mtv.corp.google.com>
Download mbox | patch
Permalink /patch/18373/
State Superseded
Headers show

Comments

via Mercurial-devel - Feb. 9, 2017, 11:09 p.m.
# HG changeset patch
# User Martin von Zweigbergk <martinvonz@google.com>
# Date 1486661545 28800
#      Thu Feb 09 09:32:25 2017 -0800
# Node ID 93d94750f3abee5b9798c41160a2102c61936133
# Parent  1f51b4658f21bbb797e922d155c1046eddccf91d
merge: print status message before launching external merge tool

It seems somewhat common that people run into a merge conflict and
don't notice the launched merge tool, and instead they thing hg just
hung. Let's print a message for each file that we launch the merge
tool for.
Danek Duvall - Feb. 9, 2017, 11:31 p.m.
Martin von Zweigbergk via Mercurial-devel wrote:

> # HG changeset patch
> # User Martin von Zweigbergk <martinvonz@google.com>
> # Date 1486661545 28800
> #      Thu Feb 09 09:32:25 2017 -0800
> # Node ID 93d94750f3abee5b9798c41160a2102c61936133
> # Parent  1f51b4658f21bbb797e922d155c1046eddccf91d
> merge: print status message before launching external merge tool
> 
> It seems somewhat common that people run into a merge conflict and
> don't notice the launched merge tool, and instead they thing hg just
> hung. Let's print a message for each file that we launch the merge
> tool for.

Perhaps only if it's a gui invocation?  If it's in the terminal, it'll just
disappear in the noise.  If a window pops up (non-interactively), that's
when you might need the warning.

Danek

Patch

diff -r 1f51b4658f21 -r 93d94750f3ab mercurial/filemerge.py
--- a/mercurial/filemerge.py	Thu Feb 02 14:19:48 2017 +0100
+++ b/mercurial/filemerge.py	Thu Feb 09 09:32:25 2017 -0800
@@ -489,7 +489,9 @@ 
     args = util.interpolate(r'\$', replace, args,
                             lambda s: util.shellquote(util.localpath(s)))
     cmd = toolpath + ' ' + args
-    repo.ui.debug('launching merge tool: %s\n' % cmd)
+    repo.ui.status(_('running merge tool %s for file %s\n') %
+                   (tool, fcd.path()))
+    repo.ui.debug('merge tool command: %s\n' % cmd)
     r = ui.system(cmd, cwd=repo.root, environ=env)
     repo.ui.debug('merge tool returned: %s\n' % r)
     return True, r, False
diff -r 1f51b4658f21 -r 93d94750f3ab tests/test-annotate.t
--- a/tests/test-annotate.t	Thu Feb 02 14:19:48 2017 +0100
+++ b/tests/test-annotate.t	Thu Feb 09 09:32:25 2017 -0800
@@ -149,6 +149,7 @@ 
   created new head
   $ hg merge
   merging b
+  running merge tool true for file b
   0 files updated, 1 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
   $ hg ci -mmergeb -d '3 0'
@@ -185,6 +186,7 @@ 
   created new head
   $ hg merge
   merging b
+  running merge tool true for file b
   0 files updated, 1 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
   $ cat <<EOF >> b
@@ -553,6 +555,7 @@ 
   26: baz:3+->3-
   $ hg merge 24
   merging baz and qux to qux
+  running merge tool true for file qux
   0 files updated, 1 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
   $ hg ci -m merge
@@ -567,6 +570,7 @@ 
   $ hg up 24 --quiet
   $ hg merge 26
   merging qux and baz to qux
+  running merge tool true for file qux
   0 files updated, 1 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
   $ hg ci -m 'merge from other side'
diff -r 1f51b4658f21 -r 93d94750f3ab tests/test-commit.t
--- a/tests/test-commit.t	Thu Feb 02 14:19:48 2017 +0100
+++ b/tests/test-commit.t	Thu Feb 09 09:32:25 2017 -0800
@@ -287,6 +287,7 @@ 
   created new head
   $ HGMERGE=true hg merge
   merging a
+  running merge tool true for file a
   0 files updated, 1 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
 
diff -r 1f51b4658f21 -r 93d94750f3ab tests/test-confused-revert.t
--- a/tests/test-confused-revert.t	Thu Feb 02 14:19:48 2017 +0100
+++ b/tests/test-confused-revert.t	Thu Feb 09 09:32:25 2017 -0800
@@ -37,6 +37,7 @@ 
 
   $ HGMERGE=true hg merge 1
   merging a
+  running merge tool true for file a
   0 files updated, 1 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
 
diff -r 1f51b4658f21 -r 93d94750f3ab tests/test-fetch.t
--- a/tests/test-fetch.t	Thu Feb 02 14:19:48 2017 +0100
+++ b/tests/test-fetch.t	Thu Feb 09 09:32:25 2017 -0800
@@ -402,6 +402,7 @@ 
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   merging with 1:d1f0c6c48ebd
   merging a
+  running merge tool true for file a
   0 files updated, 1 files merged, 0 files removed, 0 files unresolved
   new changeset 3:* merges remote changes with local (glob)
   $ hg --cwd i1726r2 heads default --template '{rev}\n'
diff -r 1f51b4658f21 -r 93d94750f3ab tests/test-filebranch.t
--- a/tests/test-filebranch.t	Thu Feb 02 14:19:48 2017 +0100
+++ b/tests/test-filebranch.t	Thu Feb 09 09:32:25 2017 -0800
@@ -58,6 +58,7 @@ 
   resolving manifests
   getting bar
   merging foo
+  launching merge tool "python ../merge" for file "foo"
   merging for foo
   1 files updated, 1 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
diff -r 1f51b4658f21 -r 93d94750f3ab tests/test-merge-local.t
--- a/tests/test-merge-local.t	Thu Feb 02 14:19:48 2017 +0100
+++ b/tests/test-merge-local.t	Thu Feb 09 09:32:25 2017 -0800
@@ -54,6 +54,7 @@ 
   $ HGMERGE=false hg co
   merging zzz1_merge_ok
   merging zzz2_merge_bad
+  running merge tool false for file zzz2_merge_bad
   merging zzz2_merge_bad failed!
   3 files updated, 1 files merged, 2 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges
diff -r 1f51b4658f21 -r 93d94750f3ab tests/test-merge-symlinks.t
--- a/tests/test-merge-symlinks.t	Thu Feb 02 14:19:48 2017 +0100
+++ b/tests/test-merge-symlinks.t	Thu Feb 09 09:32:25 2017 -0800
@@ -38,6 +38,7 @@ 
 
   $ hg merge --tool="python ../echo.py"
   merging l
+  running merge tool python ../echo.py for file l
   HG_FILE l
   HG_MY_ISLINK 1
   HG_OTHER_ISLINK 0
@@ -54,6 +55,7 @@ 
   $ hg copy l l2
   $ HGMERGE="python ../echo.py" hg up 3
   merging l2
+  running merge tool python ../echo.py for file l2
   HG_FILE l2
   HG_MY_ISLINK 1
   HG_OTHER_ISLINK 0
diff -r 1f51b4658f21 -r 93d94750f3ab tests/test-merge-tools.t
--- a/tests/test-merge-tools.t	Thu Feb 02 14:19:48 2017 +0100
+++ b/tests/test-merge-tools.t	Thu Feb 09 09:32:25 2017 -0800
@@ -96,6 +96,7 @@ 
   # hg update -C 1
   $ hg merge -r 2
   merging f
+  running merge tool false for file f
   merging f failed!
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
@@ -148,6 +149,7 @@ 
   # hg update -C 1
   $ hg merge -r 2
   merging f
+  running merge tool true for file f
   0 files updated, 1 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
   $ aftermerge
@@ -168,6 +170,7 @@ 
   # hg update -C 1
   $ hg merge -r 2 --config merge-tools.true.priority=-7
   merging f
+  running merge tool false for file f
   merging f failed!
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
@@ -191,6 +194,7 @@ 
   # hg update -C 1
   $ hg merge -r 2 --config merge-tools.false.priority=117
   merging f
+  running merge tool false for file f
   merging f failed!
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
@@ -213,6 +217,7 @@ 
   # hg update -C 1
   $ hg merge -r 2 --config merge-tools.true.disabled=yes
   merging f
+  running merge tool false for file f
   merging f failed!
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
@@ -236,6 +241,7 @@ 
   # hg update -C 1
   $ hg merge -r 2 --config merge-tools.true.executable=nonexistentmergetool
   merging f
+  running merge tool false for file f
   merging f failed!
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
@@ -259,6 +265,7 @@ 
   # hg update -C 1
   $ hg merge -r 2 --config merge-tools.true.executable=/nonexistent/mergetool
   merging f
+  running merge tool false for file f
   merging f failed!
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
@@ -284,6 +291,7 @@ 
   # hg update -C 1
   $ hg merge -r 2
   merging f
+  running merge tool true for file f
   revision 1
   space
   revision 0
@@ -311,6 +319,7 @@ 
   # hg update -C 1
   $ hg merge -r 2 --config merge-tools.true.executable=cat
   merging f
+  running merge tool true for file f
   revision 1
   space
   revision 0
@@ -343,6 +352,7 @@ 
   >    --config merge-tools.true.args=.hg/merge.sh \
   >    merge -r 2
   merging f
+  running merge tool true for file f
   custom merge tool
   0 files updated, 1 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -369,6 +379,7 @@ 
   # hg update -C 1
   $ hg merge -r 2 --config merge-patterns.f=false
   merging f
+  running merge tool false for file f
   merging f failed!
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
@@ -395,6 +406,7 @@ 
   couldn't find merge tool true specified for f
   merging f
   couldn't find merge tool true specified for f
+  running merge tool false for file f
   merging f failed!
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
@@ -421,6 +433,7 @@ 
   couldn't find merge tool true specified for f
   merging f
   couldn't find merge tool true specified for f
+  running merge tool false for file f
   merging f failed!
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
@@ -447,6 +460,7 @@ 
   # hg update -C 1
   $ hg merge -r 2 --config ui.merge=false
   merging f
+  running merge tool false for file f
   merging f failed!
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
@@ -687,6 +701,7 @@ 
   # hg update -C 1
   $ hg merge -r 2 --config ui.merge=internal:other --config merge-patterns.f=false
   merging f
+  running merge tool false for file f
   merging f failed!
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
@@ -713,6 +728,7 @@ 
   # hg update -C 1
   $ hg merge -r 2 --config ui.merge=internal:other --tool=false
   merging f
+  running merge tool false for file f
   merging f failed!
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
@@ -738,6 +754,7 @@ 
   # hg update -C 1
   $ hg merge -r 2 --tool=false
   merging f
+  running merge tool false for file f
   merging f failed!
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
@@ -794,6 +811,7 @@ 
   M f
   $ hg update -r 2
   merging f
+  running merge tool true for file f
   revision 1
   space
   revision 0
@@ -839,6 +857,7 @@ 
   M f
   $ hg update -r 2 --tool false
   merging f
+  running merge tool false for file f
   merging f failed!
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges
@@ -907,6 +926,7 @@ 
   # hg update -C 1
   $ hg merge -r 3 --config merge-tools.true.premerge=False
   merging f
+  running merge tool true for file f
   revision 1
   space
   revision 0
@@ -935,6 +955,7 @@ 
   # hg update -C 1
   $ hg merge -r 4 --config merge-tools.true.premerge=keep
   merging f
+  running merge tool true for file f
   <<<<<<< working copy: ef83787e2614 - test: revision 1
   revision 1
   space
@@ -969,6 +990,7 @@ 
   # hg update -C 1
   $ hg merge -r 4 --config merge-tools.true.premerge=keep-merge3
   merging f
+  running merge tool true for file f
   <<<<<<< working copy: ef83787e2614 - test: revision 1
   revision 1
   space
@@ -1013,6 +1035,7 @@ 
   $ hg merge -r 2 --config merge-tools.true.executable=head --config merge-tools.true.args='$base $local $other $output' \
   >   | sed 's,==> .* <==,==> ... <==,g'
   merging f
+  running merge tool true for file f
   ==> ... <==
   revision 0
   space
@@ -1049,6 +1072,7 @@ 
   # hg update -C 1
   $ hg merge -r 2 --config merge-tools.true.executable=echo --config merge-tools.true.args='mergeresult > $local'
   merging f
+  running merge tool true for file f
   0 files updated, 1 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
   $ aftermerge
@@ -1069,6 +1093,7 @@ 
   # hg update -C 1
   $ hg merge -r 2 --config merge-tools.true.executable=echo --config merge-tools.true.args='mergeresult > f'
   merging f
+  running merge tool true for file f
   0 files updated, 1 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
   $ aftermerge
@@ -1089,6 +1114,7 @@ 
   # hg update -C 1
   $ hg merge -r 2 --config merge-tools.true.executable=echo --config merge-tools.true.args='mergeresult > $output'
   merging f
+  running merge tool true for file f
   0 files updated, 1 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
   $ aftermerge
@@ -1114,6 +1140,7 @@ 
   >    --config merge-tools.true.args='"./my merge tool" $base $local $other $output' \
   >    merge -r 2
   merging f
+  running merge tool true for file 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'
@@ -1153,6 +1180,7 @@ 
   created new head
   $ hg merge --config merge-tools.true.executable="true" -r 5
   merging "; exit 1; echo "
+  running merge tool true for file "; 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
@@ -1170,6 +1198,7 @@ 
   # hg update -C 1
   $ hg merge -y -r 2 --config merge-tools.true.checkchanged=1
   merging f
+  running merge tool true for file f
   revision 1
   space
   revision 0
@@ -1218,6 +1247,7 @@ 
   $ 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
+  running merge tool echo for file f.txt
   */f~base.?????? $TESTTMP/f.txt.orig */f~other.??????.txt $TESTTMP/f.txt (glob)
   0 files updated, 1 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
diff -r 1f51b4658f21 -r 93d94750f3ab tests/test-merge1.t
--- a/tests/test-merge1.t	Thu Feb 02 14:19:48 2017 +0100
+++ b/tests/test-merge1.t	Thu Feb 09 09:32:25 2017 -0800
@@ -180,6 +180,7 @@ 
   [255]
   $ hg merge 3 --config merge.checkignored=abort --config merge.checkunknown=ignore
   merging .hgignore
+  running merge tool python ../merge for file .hgignore
   merging for .hgignore
   3 files updated, 1 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -212,6 +213,7 @@ 
   b: replacing untracked file
   localignored: replacing untracked file
   merging .hgignore
+  running merge tool python ../merge for file .hgignore
   merging for .hgignore
   3 files updated, 1 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -232,6 +234,7 @@ 
   This is file b2
   $ hg merge -f 1
   merging b
+  running merge tool python ../merge for file b
   merging for b
   0 files updated, 1 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -312,6 +315,7 @@ 
 merge of b expected
   $ hg merge -f 2
   merging b
+  running merge tool python ../merge for file b
   merging for b
   0 files updated, 1 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
diff -r 1f51b4658f21 -r 93d94750f3ab tests/test-merge9.t
--- a/tests/test-merge9.t	Thu Feb 02 14:19:48 2017 +0100
+++ b/tests/test-merge9.t	Thu Feb 09 09:32:25 2017 -0800
@@ -28,6 +28,7 @@ 
   $ HGMERGE=false hg merge
   merging bar
   merging foo and baz to baz
+  running merge tool false for file bar
   merging bar failed!
   1 files updated, 1 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
@@ -42,6 +43,7 @@ 
   $ HGMERGE=false hg merge
   merging bar
   merging baz and foo to baz
+  running merge tool false for file bar
   merging bar failed!
   1 files updated, 1 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
diff -r 1f51b4658f21 -r 93d94750f3ab tests/test-mq.t
--- a/tests/test-mq.t	Thu Feb 02 14:19:48 2017 +0100
+++ b/tests/test-mq.t	Thu Feb 09 09:32:25 2017 -0800
@@ -1180,6 +1180,7 @@ 
   created new head
   $ HGMERGE=true hg merge
   merging foo
+  launching merge tool "true" for file "foo"
   0 files updated, 1 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
   $ hg ci -m merge
diff -r 1f51b4658f21 -r 93d94750f3ab tests/test-parents.t
--- a/tests/test-parents.t	Thu Feb 02 14:19:48 2017 +0100
+++ b/tests/test-parents.t	Thu Feb 09 09:32:25 2017 -0800
@@ -102,6 +102,7 @@ 
 
   $ HGMERGE=true hg merge
   merging c
+  running merge tool true for file c
   0 files updated, 1 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
   $ hg parents c
diff -r 1f51b4658f21 -r 93d94750f3ab tests/test-pull-update.t
--- a/tests/test-pull-update.t	Thu Feb 02 14:19:48 2017 +0100
+++ b/tests/test-pull-update.t	Thu Feb 09 09:32:25 2017 -0800
@@ -44,6 +44,7 @@ 
 
   $ HGMERGE=true hg merge
   merging foo
+  running merge tool true for file foo
   0 files updated, 1 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
   $ hg ci -mm
diff -r 1f51b4658f21 -r 93d94750f3ab tests/test-push-warn.t
--- a/tests/test-push-warn.t	Thu Feb 02 14:19:48 2017 +0100
+++ b/tests/test-push-warn.t	Thu Feb 09 09:32:25 2017 -0800
@@ -110,6 +110,7 @@ 
 
   $ HGMERGE=true hg merge 3
   merging foo
+  running merge tool true for file foo
   0 files updated, 1 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
 
diff -r 1f51b4658f21 -r 93d94750f3ab tests/test-rename-merge2.t
--- a/tests/test-rename-merge2.t	Thu Feb 02 14:19:48 2017 +0100
+++ b/tests/test-rename-merge2.t	Thu Feb 09 09:32:25 2017 -0800
@@ -102,7 +102,8 @@ 
    rev: versions differ -> m (merge)
   picked tool 'python ../merge' for rev (binary False symlink False changedelete False)
   my rev@e300d1c794ec+ other rev@4ce40f5aca24 ancestor rev@924404dff337
-  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
+  running merge tool python ../merge for file rev
+  merge tool command: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   0 files updated, 2 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -142,7 +143,8 @@ 
    rev: versions differ -> m (merge)
   picked tool 'python ../merge' for rev (binary False symlink False changedelete False)
   my rev@86a2aa42fc76+ other rev@f4db7e329e71 ancestor rev@924404dff337
-  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
+  running merge tool python ../merge for file rev
+  merge tool command: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   1 files updated, 2 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -182,7 +184,8 @@ 
    rev: versions differ -> m (merge)
   picked tool 'python ../merge' for rev (binary False symlink False changedelete False)
   my rev@e300d1c794ec+ other rev@bdb19105162a ancestor rev@924404dff337
-  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
+  running merge tool python ../merge for file rev
+  merge tool command: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   0 files updated, 2 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -220,7 +223,8 @@ 
    rev: versions differ -> m (merge)
   picked tool 'python ../merge' for rev (binary False symlink False changedelete False)
   my rev@02963e448370+ other rev@f4db7e329e71 ancestor rev@924404dff337
-  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
+  running merge tool python ../merge for file rev
+  merge tool command: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   0 files updated, 2 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -253,7 +257,8 @@ 
    rev: versions differ -> m (merge)
   picked tool 'python ../merge' for rev (binary False symlink False changedelete False)
   my rev@94b33a1b7f2d+ other rev@4ce40f5aca24 ancestor rev@924404dff337
-  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
+  running merge tool python ../merge for file rev
+  merge tool command: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   1 files updated, 1 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -285,7 +290,8 @@ 
    rev: versions differ -> m (merge)
   picked tool 'python ../merge' for rev (binary False symlink False changedelete False)
   my rev@86a2aa42fc76+ other rev@97c705ade336 ancestor rev@924404dff337
-  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
+  running merge tool python ../merge for file rev
+  merge tool command: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   0 files updated, 1 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -320,7 +326,8 @@ 
    rev: versions differ -> m (merge)
   picked tool 'python ../merge' for rev (binary False symlink False changedelete False)
   my rev@94b33a1b7f2d+ other rev@bdb19105162a ancestor rev@924404dff337
-  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
+  running merge tool python ../merge for file rev
+  merge tool command: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   1 files updated, 1 files merged, 1 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -351,7 +358,8 @@ 
    rev: versions differ -> m (merge)
   picked tool 'python ../merge' for rev (binary False symlink False changedelete False)
   my rev@02963e448370+ other rev@97c705ade336 ancestor rev@924404dff337
-  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
+  running merge tool python ../merge for file rev
+  merge tool command: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   0 files updated, 1 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -384,12 +392,14 @@ 
    b: both renamed from a -> m (merge)
   picked tool 'python ../merge' for b (binary False symlink False changedelete False)
   my b@62e7bf090eba+ other b@49b6d8032493 ancestor a@924404dff337
-  launching merge tool: python ../merge *$TESTTMP/t/t/b* * * (glob)
+  running merge tool python ../merge for file b
+  merge tool command: python ../merge *$TESTTMP/t/t/b* * * (glob)
   merge tool returned: 0
    rev: versions differ -> m (merge)
   picked tool 'python ../merge' for rev (binary False symlink False changedelete False)
   my rev@62e7bf090eba+ other rev@49b6d8032493 ancestor rev@924404dff337
-  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
+  running merge tool python ../merge for file rev
+  merge tool command: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   0 files updated, 2 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -430,7 +440,8 @@ 
    rev: versions differ -> m (merge)
   picked tool 'python ../merge' for rev (binary False symlink False changedelete False)
   my rev@02963e448370+ other rev@fe905ef2c33e ancestor rev@924404dff337
-  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
+  running merge tool python ../merge for file rev
+  merge tool command: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   1 files updated, 1 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -464,12 +475,14 @@ 
    b: both created -> m (merge)
   picked tool 'python ../merge' for b (binary False symlink False changedelete False)
   my b@86a2aa42fc76+ other b@af30c7647fc7 ancestor b@000000000000
-  launching merge tool: python ../merge *$TESTTMP/t/t/b* * * (glob)
+  running merge tool python ../merge for file b
+  merge tool command: python ../merge *$TESTTMP/t/t/b* * * (glob)
   merge tool returned: 0
    rev: versions differ -> m (merge)
   picked tool 'python ../merge' for rev (binary False symlink False changedelete False)
   my rev@86a2aa42fc76+ other rev@af30c7647fc7 ancestor rev@924404dff337
-  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
+  running merge tool python ../merge for file rev
+  merge tool command: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   0 files updated, 2 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -505,12 +518,14 @@ 
    b: both created -> m (merge)
   picked tool 'python ../merge' for b (binary False symlink False changedelete False)
   my b@59318016310c+ other b@bdb19105162a ancestor b@000000000000
-  launching merge tool: python ../merge *$TESTTMP/t/t/b* * * (glob)
+  running merge tool python ../merge for file b
+  merge tool command: python ../merge *$TESTTMP/t/t/b* * * (glob)
   merge tool returned: 0
    rev: versions differ -> m (merge)
   picked tool 'python ../merge' for rev (binary False symlink False changedelete False)
   my rev@59318016310c+ other rev@bdb19105162a ancestor rev@924404dff337
-  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
+  running merge tool python ../merge for file rev
+  merge tool command: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   0 files updated, 2 files merged, 1 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -544,12 +559,14 @@ 
    b: both created -> m (merge)
   picked tool 'python ../merge' for b (binary False symlink False changedelete False)
   my b@86a2aa42fc76+ other b@8dbce441892a ancestor b@000000000000
-  launching merge tool: python ../merge *$TESTTMP/t/t/b* * * (glob)
+  running merge tool python ../merge for file b
+  merge tool command: python ../merge *$TESTTMP/t/t/b* * * (glob)
   merge tool returned: 0
    rev: versions differ -> m (merge)
   picked tool 'python ../merge' for rev (binary False symlink False changedelete False)
   my rev@86a2aa42fc76+ other rev@8dbce441892a ancestor rev@924404dff337
-  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
+  running merge tool python ../merge for file rev
+  merge tool command: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   1 files updated, 2 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -585,12 +602,14 @@ 
    b: both created -> m (merge)
   picked tool 'python ../merge' for b (binary False symlink False changedelete False)
   my b@59318016310c+ other b@bdb19105162a ancestor b@000000000000
-  launching merge tool: python ../merge *$TESTTMP/t/t/b* * * (glob)
+  running merge tool python ../merge for file b
+  merge tool command: python ../merge *$TESTTMP/t/t/b* * * (glob)
   merge tool returned: 0
    rev: versions differ -> m (merge)
   picked tool 'python ../merge' for rev (binary False symlink False changedelete False)
   my rev@59318016310c+ other rev@bdb19105162a ancestor rev@924404dff337
-  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
+  running merge tool python ../merge for file rev
+  merge tool command: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   0 files updated, 2 files merged, 1 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -624,12 +643,14 @@ 
    b: both created -> m (merge)
   picked tool 'python ../merge' for b (binary False symlink False changedelete False)
   my b@86a2aa42fc76+ other b@8dbce441892a ancestor b@000000000000
-  launching merge tool: python ../merge *$TESTTMP/t/t/b* * * (glob)
+  running merge tool python ../merge for file b
+  merge tool command: python ../merge *$TESTTMP/t/t/b* * * (glob)
   merge tool returned: 0
    rev: versions differ -> m (merge)
   picked tool 'python ../merge' for rev (binary False symlink False changedelete False)
   my rev@86a2aa42fc76+ other rev@8dbce441892a ancestor rev@924404dff337
-  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
+  running merge tool python ../merge for file rev
+  merge tool command: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   1 files updated, 2 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -664,12 +685,14 @@ 
    b: both created -> m (merge)
   picked tool 'python ../merge' for b (binary False symlink False changedelete False)
   my b@0b76e65c8289+ other b@4ce40f5aca24 ancestor b@000000000000
-  launching merge tool: python ../merge *$TESTTMP/t/t/b* * * (glob)
+  running merge tool python ../merge for file b
+  merge tool command: python ../merge *$TESTTMP/t/t/b* * * (glob)
   merge tool returned: 0
    rev: versions differ -> m (merge)
   picked tool 'python ../merge' for rev (binary False symlink False changedelete False)
   my rev@0b76e65c8289+ other rev@4ce40f5aca24 ancestor rev@924404dff337
-  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
+  running merge tool python ../merge for file rev
+  merge tool command: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   0 files updated, 2 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -707,12 +730,14 @@ 
    b: both created -> m (merge)
   picked tool 'python ../merge' for b (binary False symlink False changedelete False)
   my b@02963e448370+ other b@8dbce441892a ancestor b@000000000000
-  launching merge tool: python ../merge *$TESTTMP/t/t/b* * * (glob)
+  running merge tool python ../merge for file b
+  merge tool command: python ../merge *$TESTTMP/t/t/b* * * (glob)
   merge tool returned: 0
    rev: versions differ -> m (merge)
   picked tool 'python ../merge' for rev (binary False symlink False changedelete False)
   my rev@02963e448370+ other rev@8dbce441892a ancestor rev@924404dff337
-  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
+  running merge tool python ../merge for file rev
+  merge tool command: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   0 files updated, 2 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
@@ -752,12 +777,14 @@ 
    b: both created -> m (merge)
   picked tool 'python ../merge' for b (binary False symlink False changedelete False)
   my b@0b76e65c8289+ other b@bdb19105162a ancestor b@000000000000
-  launching merge tool: python ../merge *$TESTTMP/t/t/b* * * (glob)
+  running merge tool python ../merge for file b
+  merge tool command: python ../merge *$TESTTMP/t/t/b* * * (glob)
   merge tool returned: 0
    rev: versions differ -> m (merge)
   picked tool 'python ../merge' for rev (binary False symlink False changedelete False)
   my rev@0b76e65c8289+ other rev@bdb19105162a ancestor rev@924404dff337
-  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
+  running merge tool python ../merge for file rev
+  merge tool command: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   0 files updated, 2 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
@@ -796,12 +823,14 @@ 
    b: remote moved from a -> m (merge)
   picked tool 'python ../merge' for b (binary False symlink False changedelete False)
   my b@e300d1c794ec+ other b@49b6d8032493 ancestor a@924404dff337
-  launching merge tool: python ../merge *$TESTTMP/t/t/b* * * (glob)
+  running merge tool python ../merge for file b
+  merge tool command: python ../merge *$TESTTMP/t/t/b* * * (glob)
   merge tool returned: 0
    rev: versions differ -> m (merge)
   picked tool 'python ../merge' for rev (binary False symlink False changedelete False)
   my rev@e300d1c794ec+ other rev@49b6d8032493 ancestor rev@924404dff337
-  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
+  running merge tool python ../merge for file rev
+  merge tool command: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   0 files updated, 2 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -838,12 +867,14 @@ 
    b: local copied/moved from a -> m (merge)
   picked tool 'python ../merge' for b (binary False symlink False changedelete False)
   my b@62e7bf090eba+ other a@f4db7e329e71 ancestor a@924404dff337
-  launching merge tool: python ../merge *$TESTTMP/t/t/b* * * (glob)
+  running merge tool python ../merge for file b
+  merge tool command: python ../merge *$TESTTMP/t/t/b* * * (glob)
   merge tool returned: 0
    rev: versions differ -> m (merge)
   picked tool 'python ../merge' for rev (binary False symlink False changedelete False)
   my rev@62e7bf090eba+ other rev@f4db7e329e71 ancestor rev@924404dff337
-  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
+  running merge tool python ../merge for file rev
+  merge tool command: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   0 files updated, 2 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -887,7 +918,8 @@ 
    rev: versions differ -> m (merge)
   picked tool 'python ../merge' for rev (binary False symlink False changedelete False)
   my rev@02963e448370+ other rev@2b958612230f ancestor rev@924404dff337
-  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
+  running merge tool python ../merge for file rev
+  merge tool command: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   1 files updated, 2 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
diff -r 1f51b4658f21 -r 93d94750f3ab tests/test-shelve.t
--- a/tests/test-shelve.t	Thu Feb 02 14:19:48 2017 +0100
+++ b/tests/test-shelve.t	Thu Feb 09 09:32:25 2017 -0800
@@ -541,6 +541,7 @@ 
   rebasing shelved changes
   rebasing 6:2f694dd83a13 "changes to: second" (tip)
   merging a/a
+  launching merge tool "true" for file "a/a"
   note: rebase of 6:2f694dd83a13 created no changes to commit
   $ hg parents -q
   4:33f7f61e6c5e
diff -r 1f51b4658f21 -r 93d94750f3ab tests/test-strip.t
--- a/tests/test-strip.t	Thu Feb 02 14:19:48 2017 +0100
+++ b/tests/test-strip.t	Thu Feb 09 09:32:25 2017 -0800
@@ -524,6 +524,7 @@ 
   $ echo c > bar
   $ hg up -t false
   merging bar
+  running merge tool false for file bar
   merging bar failed!
   1 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges
diff -r 1f51b4658f21 -r 93d94750f3ab tests/test-up-local-change.t
--- a/tests/test-up-local-change.t	Thu Feb 02 14:19:48 2017 +0100
+++ b/tests/test-up-local-change.t	Thu Feb 09 09:32:25 2017 -0800
@@ -56,7 +56,8 @@ 
    a: versions differ -> m (merge)
   picked tool 'true' for a (binary False symlink False changedelete False)
   my a@c19d34741b0a+ other a@1e71731e6fbb ancestor a@c19d34741b0a
-  launching merge tool: true *$TESTTMP/r2/a* * * (glob)
+  running merge tool true for file a
+  merge tool command: true *$TESTTMP/r2/a* * * (glob)
   merge tool returned: 0
   1 files updated, 1 files merged, 0 files removed, 0 files unresolved
   $ hg parents
@@ -85,7 +86,8 @@ 
    a: versions differ -> m (merge)
   picked tool 'true' for a (binary False symlink False changedelete False)
   my a@1e71731e6fbb+ other a@c19d34741b0a ancestor a@1e71731e6fbb
-  launching merge tool: true *$TESTTMP/r2/a* * * (glob)
+  running merge tool true for file a
+  merge tool command: true *$TESTTMP/r2/a* * * (glob)
   merge tool returned: 0
   0 files updated, 1 files merged, 1 files removed, 0 files unresolved
   $ hg parents
@@ -111,7 +113,8 @@ 
    a: versions differ -> m (merge)
   picked tool 'true' for a (binary False symlink False changedelete False)
   my a@c19d34741b0a+ other a@1e71731e6fbb ancestor a@c19d34741b0a
-  launching merge tool: true *$TESTTMP/r2/a* * * (glob)
+  running merge tool true for file a
+  merge tool command: true *$TESTTMP/r2/a* * * (glob)
   merge tool returned: 0
   1 files updated, 1 files merged, 0 files removed, 0 files unresolved
   $ hg parents