diff --git a/mercurial/filemerge.py b/mercurial/filemerge.py
index d5abe76da61ebe8a886323dcc13eb0b2c142ec27_bWVyY3VyaWFsL2ZpbGVtZXJnZS5weQ==..2371f4aea6655019da34a05d687ee3a6c13fc913_bWVyY3VyaWFsL2ZpbGVtZXJnZS5weQ== 100644
--- a/mercurial/filemerge.py
+++ b/mercurial/filemerge.py
@@ -262,7 +262,11 @@
         _matcheol(repo.wjoin(fd), back)
 
     if r:
-        ui.warn(_("merging %s failed!\n") % fd)
+        if tool == "internal:merge":
+            ui.warn(_("merging %s incomplete! "
+                      "(edit conflicts, then use 'hg resolve --mark')\n") % fd)
+        else:
+            ui.warn(_("merging %s failed!\n") % fd)
     else:
         os.unlink(back)
 
diff --git a/tests/test-add.t b/tests/test-add.t
index d5abe76da61ebe8a886323dcc13eb0b2c142ec27_dGVzdHMvdGVzdC1hZGQudA==..2371f4aea6655019da34a05d687ee3a6c13fc913_dGVzdHMvdGVzdC1hZGQudA== 100644
--- a/tests/test-add.t
+++ b/tests/test-add.t
@@ -88,7 +88,7 @@
   $ hg merge
   merging a
   warning: conflicts during merge.
-  merging a failed!
+  merging a incomplete! (edit conflicts, then use 'hg resolve --mark')
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
   [1]
diff --git a/tests/test-commit-unresolved.t b/tests/test-commit-unresolved.t
index d5abe76da61ebe8a886323dcc13eb0b2c142ec27_dGVzdHMvdGVzdC1jb21taXQtdW5yZXNvbHZlZC50..2371f4aea6655019da34a05d687ee3a6c13fc913_dGVzdHMvdGVzdC1jb21taXQtdW5yZXNvbHZlZC50 100644
--- a/tests/test-commit-unresolved.t
+++ b/tests/test-commit-unresolved.t
@@ -29,7 +29,7 @@
   $ hg merge
   merging A
   warning: conflicts during merge.
-  merging A failed!
+  merging A incomplete! (edit conflicts, then use 'hg resolve --mark')
   1 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
   [1]
diff --git a/tests/test-conflict.t b/tests/test-conflict.t
index d5abe76da61ebe8a886323dcc13eb0b2c142ec27_dGVzdHMvdGVzdC1jb25mbGljdC50..2371f4aea6655019da34a05d687ee3a6c13fc913_dGVzdHMvdGVzdC1jb25mbGljdC50 100644
--- a/tests/test-conflict.t
+++ b/tests/test-conflict.t
@@ -13,7 +13,7 @@
   $ hg merge 1
   merging a
   warning: conflicts during merge.
-  merging a failed!
+  merging a incomplete! (edit conflicts, then use 'hg resolve --mark')
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
   [1]
diff --git a/tests/test-convert-svn-sink.t b/tests/test-convert-svn-sink.t
index d5abe76da61ebe8a886323dcc13eb0b2c142ec27_dGVzdHMvdGVzdC1jb252ZXJ0LXN2bi1zaW5rLnQ=..2371f4aea6655019da34a05d687ee3a6c13fc913_dGVzdHMvdGVzdC1jb252ZXJ0LXN2bi1zaW5rLnQ= 100644
--- a/tests/test-convert-svn-sink.t
+++ b/tests/test-convert-svn-sink.t
@@ -416,7 +416,7 @@
   $ hg --cwd b merge
   merging b
   warning: conflicts during merge.
-  merging b failed!
+  merging b incomplete! (edit conflicts, then use 'hg resolve --mark')
   2 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
   [1]
diff --git a/tests/test-graft.t b/tests/test-graft.t
index d5abe76da61ebe8a886323dcc13eb0b2c142ec27_dGVzdHMvdGVzdC1ncmFmdC50..2371f4aea6655019da34a05d687ee3a6c13fc913_dGVzdHMvdGVzdC1ncmFmdC50 100644
--- a/tests/test-graft.t
+++ b/tests/test-graft.t
@@ -151,7 +151,7 @@
   merging e
   my e@77eb504366ab+ other e@9c233e8e184d ancestor e@68795b066622
   warning: conflicts during merge.
-  merging e failed!
+  merging e incomplete! (edit conflicts, then use 'hg resolve --mark')
     searching for copies back to rev 1
     unmatched files in local:
      c
diff --git a/tests/test-keyword.t b/tests/test-keyword.t
index d5abe76da61ebe8a886323dcc13eb0b2c142ec27_dGVzdHMvdGVzdC1rZXl3b3JkLnQ=..2371f4aea6655019da34a05d687ee3a6c13fc913_dGVzdHMvdGVzdC1rZXl3b3JkLnQ= 100644
--- a/tests/test-keyword.t
+++ b/tests/test-keyword.t
@@ -976,7 +976,7 @@
   $ hg merge
   merging m
   warning: conflicts during merge.
-  merging m failed!
+  merging m incomplete! (edit conflicts, then use 'hg resolve --mark')
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
   [1]
diff --git a/tests/test-lfconvert.t b/tests/test-lfconvert.t
index d5abe76da61ebe8a886323dcc13eb0b2c142ec27_dGVzdHMvdGVzdC1sZmNvbnZlcnQudA==..2371f4aea6655019da34a05d687ee3a6c13fc913_dGVzdHMvdGVzdC1sZmNvbnZlcnQudA== 100644
--- a/tests/test-lfconvert.t
+++ b/tests/test-lfconvert.t
@@ -84,7 +84,7 @@
   $ hg merge
   merging sub/maybelarge.dat and stuff/maybelarge.dat to stuff/maybelarge.dat
   warning: $TESTTMP/bigfile-repo/stuff/maybelarge.dat looks like a binary file. (glob)
-  merging stuff/maybelarge.dat failed!
+  merging stuff/maybelarge.dat incomplete! (edit conflicts, then use 'hg resolve --mark')
   merging sub/normal2 and stuff/normal2 to stuff/normal2
   0 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 --git a/tests/test-log.t b/tests/test-log.t
index d5abe76da61ebe8a886323dcc13eb0b2c142ec27_dGVzdHMvdGVzdC1sb2cudA==..2371f4aea6655019da34a05d687ee3a6c13fc913_dGVzdHMvdGVzdC1sb2cudA== 100644
--- a/tests/test-log.t
+++ b/tests/test-log.t
@@ -922,7 +922,7 @@
   $ hg merge 7
   merging foo
   warning: conflicts during merge.
-  merging foo failed!
+  merging foo incomplete! (edit conflicts, then use 'hg resolve --mark')
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
   [1]
@@ -933,7 +933,7 @@
   $ hg merge 4
   merging foo
   warning: conflicts during merge.
-  merging foo failed!
+  merging foo incomplete! (edit conflicts, then use 'hg resolve --mark')
   1 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
   [1]
diff --git a/tests/test-merge-local.t b/tests/test-merge-local.t
index d5abe76da61ebe8a886323dcc13eb0b2c142ec27_dGVzdHMvdGVzdC1tZXJnZS1sb2NhbC50..2371f4aea6655019da34a05d687ee3a6c13fc913_dGVzdHMvdGVzdC1tZXJnZS1sb2NhbC50 100644
--- a/tests/test-merge-local.t
+++ b/tests/test-merge-local.t
@@ -63,7 +63,7 @@
   merging zzz1_merge_ok
   merging zzz2_merge_bad
   warning: conflicts during merge.
-  merging zzz2_merge_bad failed!
+  merging zzz2_merge_bad incomplete! (edit conflicts, then use 'hg resolve --mark')
   2 files updated, 1 files merged, 3 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges
   [1]
@@ -88,7 +88,7 @@
   merging zzz1_merge_ok
   merging zzz2_merge_bad
   warning: conflicts during merge.
-  merging zzz2_merge_bad failed!
+  merging zzz2_merge_bad incomplete! (edit conflicts, then use 'hg resolve --mark')
   3 files updated, 1 files merged, 2 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges
   [1]
@@ -97,7 +97,7 @@
   merging zzz1_merge_ok
   merging zzz2_merge_bad
   warning: conflicts during merge.
-  merging zzz2_merge_bad failed!
+  merging zzz2_merge_bad incomplete! (edit conflicts, then use 'hg resolve --mark')
   2 files updated, 1 files merged, 3 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges
   [1]
diff --git a/tests/test-merge-revert2.t b/tests/test-merge-revert2.t
index d5abe76da61ebe8a886323dcc13eb0b2c142ec27_dGVzdHMvdGVzdC1tZXJnZS1yZXZlcnQyLnQ=..2371f4aea6655019da34a05d687ee3a6c13fc913_dGVzdHMvdGVzdC1tZXJnZS1yZXZlcnQyLnQ= 100644
--- a/tests/test-merge-revert2.t
+++ b/tests/test-merge-revert2.t
@@ -45,7 +45,7 @@
   $ hg update
   merging file1
   warning: conflicts during merge.
-  merging file1 failed!
+  merging file1 incomplete! (edit conflicts, then use 'hg resolve --mark')
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges
   [1]
diff --git a/tests/test-merge-tools.t b/tests/test-merge-tools.t
index d5abe76da61ebe8a886323dcc13eb0b2c142ec27_dGVzdHMvdGVzdC1tZXJnZS10b29scy50..2371f4aea6655019da34a05d687ee3a6c13fc913_dGVzdHMvdGVzdC1tZXJnZS10b29scy50 100644
--- a/tests/test-merge-tools.t
+++ b/tests/test-merge-tools.t
@@ -66,7 +66,7 @@
   $ PATH="$BINDIR" $PYTHON "$BINDIR"/hg merge -r 2
   merging f
   warning: conflicts during merge.
-  merging f failed!
+  merging f incomplete! (edit conflicts, then use 'hg resolve --mark')
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
   [1]
diff --git a/tests/test-merge7.t b/tests/test-merge7.t
index d5abe76da61ebe8a886323dcc13eb0b2c142ec27_dGVzdHMvdGVzdC1tZXJnZTcudA==..2371f4aea6655019da34a05d687ee3a6c13fc913_dGVzdHMvdGVzdC1tZXJnZTcudA== 100644
--- a/tests/test-merge7.t
+++ b/tests/test-merge7.t
@@ -45,7 +45,7 @@
   $ hg merge
   merging test.txt
   warning: conflicts during merge.
-  merging test.txt failed!
+  merging test.txt incomplete! (edit conflicts, then use 'hg resolve --mark')
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
   [1]
@@ -90,7 +90,7 @@
   merging test.txt
   my test.txt@50c3a7e29886+ other test.txt@40d11a4173a8 ancestor test.txt@96b70246a118
   warning: conflicts during merge.
-  merging test.txt failed!
+  merging test.txt incomplete! (edit conflicts, then use 'hg resolve --mark')
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
   [1]
diff --git a/tests/test-merge9.t b/tests/test-merge9.t
index d5abe76da61ebe8a886323dcc13eb0b2c142ec27_dGVzdHMvdGVzdC1tZXJnZTkudA==..2371f4aea6655019da34a05d687ee3a6c13fc913_dGVzdHMvdGVzdC1tZXJnZTkudA== 100644
--- a/tests/test-merge9.t
+++ b/tests/test-merge9.t
@@ -83,7 +83,7 @@
   $ hg resolve -a
   merging bar
   warning: conflicts during merge.
-  merging bar failed!
+  merging bar incomplete! (edit conflicts, then use 'hg resolve --mark')
   [1]
 
 after
diff --git a/tests/test-mq-qnew.t b/tests/test-mq-qnew.t
index d5abe76da61ebe8a886323dcc13eb0b2c142ec27_dGVzdHMvdGVzdC1tcS1xbmV3LnQ=..2371f4aea6655019da34a05d687ee3a6c13fc913_dGVzdHMvdGVzdC1tcS1xbmV3LnQ= 100644
--- a/tests/test-mq-qnew.t
+++ b/tests/test-mq-qnew.t
@@ -155,7 +155,7 @@
   created new head
   merging a
   warning: conflicts during merge.
-  merging a failed!
+  merging a incomplete! (edit conflicts, then use 'hg resolve --mark')
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
   abort: cannot manage merge changesets
@@ -228,7 +228,7 @@
   created new head
   merging a
   warning: conflicts during merge.
-  merging a failed!
+  merging a incomplete! (edit conflicts, then use 'hg resolve --mark')
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
   abort: cannot manage merge changesets
diff --git a/tests/test-rebase-abort.t b/tests/test-rebase-abort.t
index d5abe76da61ebe8a886323dcc13eb0b2c142ec27_dGVzdHMvdGVzdC1yZWJhc2UtYWJvcnQudA==..2371f4aea6655019da34a05d687ee3a6c13fc913_dGVzdHMvdGVzdC1yZWJhc2UtYWJvcnQudA== 100644
--- a/tests/test-rebase-abort.t
+++ b/tests/test-rebase-abort.t
@@ -49,7 +49,7 @@
   $ hg rebase -s 3 -d 2
   merging common
   warning: conflicts during merge.
-  merging common failed!
+  merging common incomplete! (edit conflicts, then use 'hg resolve --mark')
   abort: unresolved conflicts (see hg resolve, then hg rebase --continue)
   [255]
 
@@ -117,7 +117,7 @@
   $ hg rebase -b 4 -d 2
   merging c
   warning: conflicts during merge.
-  merging c failed!
+  merging c incomplete! (edit conflicts, then use 'hg resolve --mark')
   abort: unresolved conflicts (see hg resolve, then hg rebase --continue)
   [255]
 
diff --git a/tests/test-rebase-check-restore.t b/tests/test-rebase-check-restore.t
index d5abe76da61ebe8a886323dcc13eb0b2c142ec27_dGVzdHMvdGVzdC1yZWJhc2UtY2hlY2stcmVzdG9yZS50..2371f4aea6655019da34a05d687ee3a6c13fc913_dGVzdHMvdGVzdC1yZWJhc2UtY2hlY2stcmVzdG9yZS50 100644
--- a/tests/test-rebase-check-restore.t
+++ b/tests/test-rebase-check-restore.t
@@ -63,7 +63,7 @@
   $ hg rebase -s 1 -d 4 --keep
   merging A
   warning: conflicts during merge.
-  merging A failed!
+  merging A incomplete! (edit conflicts, then use 'hg resolve --mark')
   abort: unresolved conflicts (see hg resolve, then hg rebase --continue)
   [255]
 
@@ -115,7 +115,7 @@
   $ hg rebase -s 5 -d 4 --keepbranches
   merging A
   warning: conflicts during merge.
-  merging A failed!
+  merging A incomplete! (edit conflicts, then use 'hg resolve --mark')
   abort: unresolved conflicts (see hg resolve, then hg rebase --continue)
   [255]
 
diff --git a/tests/test-rebase-conflicts.t b/tests/test-rebase-conflicts.t
index d5abe76da61ebe8a886323dcc13eb0b2c142ec27_dGVzdHMvdGVzdC1yZWJhc2UtY29uZmxpY3RzLnQ=..2371f4aea6655019da34a05d687ee3a6c13fc913_dGVzdHMvdGVzdC1yZWJhc2UtY29uZmxpY3RzLnQ= 100644
--- a/tests/test-rebase-conflicts.t
+++ b/tests/test-rebase-conflicts.t
@@ -58,7 +58,7 @@
   $ hg rebase -s 3 -d 2
   merging common
   warning: conflicts during merge.
-  merging common failed!
+  merging common incomplete! (edit conflicts, then use 'hg resolve --mark')
   abort: unresolved conflicts (see hg resolve, then hg rebase --continue)
   [255]
 
diff --git a/tests/test-rebase-detach.t b/tests/test-rebase-detach.t
index d5abe76da61ebe8a886323dcc13eb0b2c142ec27_dGVzdHMvdGVzdC1yZWJhc2UtZGV0YWNoLnQ=..2371f4aea6655019da34a05d687ee3a6c13fc913_dGVzdHMvdGVzdC1yZWJhc2UtZGV0YWNoLnQ= 100644
--- a/tests/test-rebase-detach.t
+++ b/tests/test-rebase-detach.t
@@ -367,7 +367,7 @@
   $ hg rebase -s 8 -d 7 --detach --config ui.merge=internal:fail
   merging H
   warning: conflicts during merge.
-  merging H failed!
+  merging H incomplete! (edit conflicts, then use 'hg resolve --mark')
   abort: unresolved conflicts (see hg resolve, then hg rebase --continue)
   [255]
   $ hg resolve --all -t internal:local
diff --git a/tests/test-rebase-interruptions.t b/tests/test-rebase-interruptions.t
index d5abe76da61ebe8a886323dcc13eb0b2c142ec27_dGVzdHMvdGVzdC1yZWJhc2UtaW50ZXJydXB0aW9ucy50..2371f4aea6655019da34a05d687ee3a6c13fc913_dGVzdHMvdGVzdC1yZWJhc2UtaW50ZXJydXB0aW9ucy50 100644
--- a/tests/test-rebase-interruptions.t
+++ b/tests/test-rebase-interruptions.t
@@ -56,7 +56,7 @@
   $ hg rebase -s 1 -d 4
   merging A
   warning: conflicts during merge.
-  merging A failed!
+  merging A incomplete! (edit conflicts, then use 'hg resolve --mark')
   abort: unresolved conflicts (see hg resolve, then hg rebase --continue)
   [255]
 
@@ -88,7 +88,7 @@
   $ hg rebase --continue
   merging A
   warning: conflicts during merge.
-  merging A failed!
+  merging A incomplete! (edit conflicts, then use 'hg resolve --mark')
   abort: unresolved conflicts (see hg resolve, then hg rebase --continue)
   [255]
 
@@ -142,7 +142,7 @@
   $ hg rebase -s 1 -d 4
   merging A
   warning: conflicts during merge.
-  merging A failed!
+  merging A incomplete! (edit conflicts, then use 'hg resolve --mark')
   abort: unresolved conflicts (see hg resolve, then hg rebase --continue)
   [255]
 
diff --git a/tests/test-rebase-mq.t b/tests/test-rebase-mq.t
index d5abe76da61ebe8a886323dcc13eb0b2c142ec27_dGVzdHMvdGVzdC1yZWJhc2UtbXEudA==..2371f4aea6655019da34a05d687ee3a6c13fc913_dGVzdHMvdGVzdC1yZWJhc2UtbXEudA== 100644
--- a/tests/test-rebase-mq.t
+++ b/tests/test-rebase-mq.t
@@ -62,7 +62,7 @@
   $ hg rebase -s 2 -d 1
   merging f
   warning: conflicts during merge.
-  merging f failed!
+  merging f incomplete! (edit conflicts, then use 'hg resolve --mark')
   abort: unresolved conflicts (see hg resolve, then hg rebase --continue)
   [255]
 
@@ -73,7 +73,7 @@
   $ hg rebase -c
   merging f
   warning: conflicts during merge.
-  merging f failed!
+  merging f incomplete! (edit conflicts, then use 'hg resolve --mark')
   abort: unresolved conflicts (see hg resolve, then hg rebase --continue)
   [255]
 
diff --git a/tests/test-status-color.t b/tests/test-status-color.t
index d5abe76da61ebe8a886323dcc13eb0b2c142ec27_dGVzdHMvdGVzdC1zdGF0dXMtY29sb3IudA==..2371f4aea6655019da34a05d687ee3a6c13fc913_dGVzdHMvdGVzdC1zdGF0dXMtY29sb3IudA== 100644
--- a/tests/test-status-color.t
+++ b/tests/test-status-color.t
@@ -280,6 +280,6 @@
   $ hg merge
   merging a
   warning: conflicts during merge.
-  merging a failed!
+  merging a incomplete! (edit conflicts, then use 'hg resolve --mark')
   merging b
   warning: conflicts during merge.
@@ -284,6 +284,6 @@
   merging b
   warning: conflicts during merge.
-  merging b failed!
+  merging b incomplete! (edit conflicts, then use 'hg resolve --mark')
   0 files updated, 0 files merged, 0 files removed, 2 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
   [1]
diff --git a/tests/test-subrepo.t b/tests/test-subrepo.t
index d5abe76da61ebe8a886323dcc13eb0b2c142ec27_dGVzdHMvdGVzdC1zdWJyZXBvLnQ=..2371f4aea6655019da34a05d687ee3a6c13fc913_dGVzdHMvdGVzdC1zdWJyZXBvLnQ= 100644
--- a/tests/test-subrepo.t
+++ b/tests/test-subrepo.t
@@ -245,7 +245,7 @@
   merging t
   my t@20a0db6fbf6c+ other t@7af322bc1198 ancestor t@6747d179aa9a
   warning: conflicts during merge.
-  merging t failed!
+  merging t incomplete! (edit conflicts, then use 'hg resolve --mark')
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
diff --git a/tests/test-update-renames.t b/tests/test-update-renames.t
index d5abe76da61ebe8a886323dcc13eb0b2c142ec27_dGVzdHMvdGVzdC11cGRhdGUtcmVuYW1lcy50..2371f4aea6655019da34a05d687ee3a6c13fc913_dGVzdHMvdGVzdC11cGRhdGUtcmVuYW1lcy50 100644
--- a/tests/test-update-renames.t
+++ b/tests/test-update-renames.t
@@ -21,7 +21,7 @@
   $ hg up
   merging a and b to b
   warning: conflicts during merge.
-  merging b failed!
+  merging b incomplete! (edit conflicts, then use 'hg resolve --mark')
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges
   [1]