filemerge: default change/delete conflicts to 'leave unresolved' (BC)
authorSiddharth Agarwal <sid0@fb.com>
Wed, 23 Dec 2015 12:51:45 -0800
changeset 27599 ad5966de3c9a
parent 27598 97e39f70fb47
child 27600 cfb26146a8cd
filemerge: default change/delete conflicts to 'leave unresolved' (BC) It makes far more sense to leave these conflicts unresolved and kick back to the user than to just assume that the local version be chosen. There are almost certainly buggy scripts and applications using Mercurial in the wild that do merges or rebases non-interactively, and then assume that if the operation succeeded there's nothing the user needs to pay attention to. (This wasn't possible earlier because there was no way to re-resolve change/delete conflicts -- but now it is.)
mercurial/filemerge.py
tests/test-merge-changedelete.t
tests/test-merge-force.t
tests/test-merge-remove.t
tests/test-rename-merge2.t
--- a/mercurial/filemerge.py	Wed Dec 23 12:41:20 2015 -0800
+++ b/mercurial/filemerge.py	Wed Dec 23 12:51:45 2015 -0800
@@ -240,14 +240,14 @@
             index = ui.promptchoice(
                 _("local changed %s which remote deleted\n"
                   "use (c)hanged version, (d)elete, or leave (u)nresolved?"
-                  "$$ &Changed $$ &Delete $$ &Unresolved") % fd, 0)
+                  "$$ &Changed $$ &Delete $$ &Unresolved") % fd, 2)
             choice = ['local', 'other', 'unresolved'][index]
         elif fcd.isabsent():
             index = ui.promptchoice(
                 _("remote changed %s which local deleted\n"
                   "use (c)hanged version, leave (d)eleted, or "
                   "leave (u)nresolved?"
-                  "$$ &Changed $$ &Deleted $$ &Unresolved") % fd, 0)
+                  "$$ &Changed $$ &Deleted $$ &Unresolved") % fd, 2)
             choice = ['other', 'local', 'unresolved'][index]
         else:
             index = ui.promptchoice(
--- a/tests/test-merge-changedelete.t	Wed Dec 23 12:41:20 2015 -0800
+++ b/tests/test-merge-changedelete.t	Wed Dec 23 12:51:45 2015 -0800
@@ -55,12 +55,12 @@
 
   $ hg merge -y
   local changed file1 which remote deleted
-  use (c)hanged version, (d)elete, or leave (u)nresolved? c
+  use (c)hanged version, (d)elete, or leave (u)nresolved? u
   remote changed file2 which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   merging file3
   warning: conflicts while merging file3! (edit, then use 'hg resolve --mark')
-  0 files updated, 2 files merged, 0 files removed, 1 files unresolved
+  0 files updated, 0 files merged, 0 files removed, 3 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
   [1]
 
@@ -70,18 +70,18 @@
   M file3
   C file1
   --- resolve --list ---
-  R file1
-  R file2
+  U file1
+  U file2
   U file3
   --- debugmergestate ---
   * version 2 records
   local: 13910f48cf7bdb2a0ba6e24b4900e4fdd5739dd4
   other: 10f9a0a634e82080907e62f075ab119cbc565ea6
-  file: file1 (record type "C", state "r", hash 60b27f004e454aca81b0480209cce5081ec52390)
+  file: file1 (record type "C", state "u", hash 60b27f004e454aca81b0480209cce5081ec52390)
     local path: file1 (flags "")
     ancestor path: file1 (node b8e02f6433738021a065f94175c7cd23db5f05be)
     other path: file1 (node null)
-  file: file2 (record type "C", state "r", hash null)
+  file: file2 (record type "C", state "u", hash null)
     local path: file2 (flags "")
     ancestor path: file2 (node 5d9299349fc01ddd25d0070d149b124d8f10411e)
     other path: file2 (node e7c1328648519852e723de86c0c0525acd779257)
@@ -470,12 +470,12 @@
 
   $ hg merge --tool :prompt
   local changed file1 which remote deleted
-  use (c)hanged version, (d)elete, or leave (u)nresolved? c
+  use (c)hanged version, (d)elete, or leave (u)nresolved? u
   remote changed file2 which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   no tool found to merge file3
   keep (l)ocal, take (o)ther, or leave (u)nresolved? u
-  0 files updated, 2 files merged, 0 files removed, 1 files unresolved
+  0 files updated, 0 files merged, 0 files removed, 3 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
   [1]
   $ status
@@ -484,18 +484,18 @@
   M file3
   C file1
   --- resolve --list ---
-  R file1
-  R file2
+  U file1
+  U file2
   U file3
   --- debugmergestate ---
   * version 2 records
   local: 13910f48cf7bdb2a0ba6e24b4900e4fdd5739dd4
   other: 10f9a0a634e82080907e62f075ab119cbc565ea6
-  file: file1 (record type "C", state "r", hash 60b27f004e454aca81b0480209cce5081ec52390)
+  file: file1 (record type "C", state "u", hash 60b27f004e454aca81b0480209cce5081ec52390)
     local path: file1 (flags "")
     ancestor path: file1 (node b8e02f6433738021a065f94175c7cd23db5f05be)
     other path: file1 (node null)
-  file: file2 (record type "C", state "r", hash null)
+  file: file2 (record type "C", state "u", hash null)
     local path: file2 (flags "")
     ancestor path: file2 (node 5d9299349fc01ddd25d0070d149b124d8f10411e)
     other path: file2 (node e7c1328648519852e723de86c0c0525acd779257)
@@ -520,12 +520,12 @@
 
   $ hg merge --tool :merge3
   local changed file1 which remote deleted
-  use (c)hanged version, (d)elete, or leave (u)nresolved? c
+  use (c)hanged version, (d)elete, or leave (u)nresolved? u
   remote changed file2 which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   merging file3
   warning: conflicts while merging file3! (edit, then use 'hg resolve --mark')
-  0 files updated, 2 files merged, 0 files removed, 1 files unresolved
+  0 files updated, 0 files merged, 0 files removed, 3 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
   [1]
   $ status
@@ -534,18 +534,18 @@
   M file3
   C file1
   --- resolve --list ---
-  R file1
-  R file2
+  U file1
+  U file2
   U file3
   --- debugmergestate ---
   * version 2 records
   local: 13910f48cf7bdb2a0ba6e24b4900e4fdd5739dd4
   other: 10f9a0a634e82080907e62f075ab119cbc565ea6
-  file: file1 (record type "C", state "r", hash 60b27f004e454aca81b0480209cce5081ec52390)
+  file: file1 (record type "C", state "u", hash 60b27f004e454aca81b0480209cce5081ec52390)
     local path: file1 (flags "")
     ancestor path: file1 (node b8e02f6433738021a065f94175c7cd23db5f05be)
     other path: file1 (node null)
-  file: file2 (record type "C", state "r", hash null)
+  file: file2 (record type "C", state "u", hash null)
     local path: file2 (flags "")
     ancestor path: file2 (node 5d9299349fc01ddd25d0070d149b124d8f10411e)
     other path: file2 (node e7c1328648519852e723de86c0c0525acd779257)
@@ -679,27 +679,29 @@
   $ hg rm file2
   $ hg update 1 -y
   local changed file1 which remote deleted
-  use (c)hanged version, (d)elete, or leave (u)nresolved? c
+  use (c)hanged version, (d)elete, or leave (u)nresolved? u
   remote changed file2 which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
-  1 files updated, 2 files merged, 0 files removed, 0 files unresolved
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  1 files updated, 0 files merged, 0 files removed, 2 files unresolved
+  use 'hg resolve' to retry unresolved file merges
+  [1]
   $ status
   --- status ---
   A file1
   C file2
   C file3
   --- resolve --list ---
-  R file1
-  R file2
+  U file1
+  U file2
   --- debugmergestate ---
   * version 2 records
   local: ab57bf49aa276a22d35a473592d4c34b5abc3eff
   other: 10f9a0a634e82080907e62f075ab119cbc565ea6
-  file: file1 (record type "C", state "r", hash 60b27f004e454aca81b0480209cce5081ec52390)
+  file: file1 (record type "C", state "u", hash 60b27f004e454aca81b0480209cce5081ec52390)
     local path: file1 (flags "")
     ancestor path: file1 (node b8e02f6433738021a065f94175c7cd23db5f05be)
     other path: file1 (node null)
-  file: file2 (record type "C", state "r", hash null)
+  file: file2 (record type "C", state "u", hash null)
     local path: file2 (flags "")
     ancestor path: file2 (node 5d9299349fc01ddd25d0070d149b124d8f10411e)
     other path: file2 (node e7c1328648519852e723de86c0c0525acd779257)
@@ -878,27 +880,29 @@
   $ hg rm file2
   $ hg update 1 --tool :merge3
   local changed file1 which remote deleted
-  use (c)hanged version, (d)elete, or leave (u)nresolved? c
+  use (c)hanged version, (d)elete, or leave (u)nresolved? u
   remote changed file2 which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
-  1 files updated, 2 files merged, 0 files removed, 0 files unresolved
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  1 files updated, 0 files merged, 0 files removed, 2 files unresolved
+  use 'hg resolve' to retry unresolved file merges
+  [1]
   $ status
   --- status ---
   A file1
   C file2
   C file3
   --- resolve --list ---
-  R file1
-  R file2
+  U file1
+  U file2
   --- debugmergestate ---
   * version 2 records
   local: ab57bf49aa276a22d35a473592d4c34b5abc3eff
   other: 10f9a0a634e82080907e62f075ab119cbc565ea6
-  file: file1 (record type "C", state "r", hash 60b27f004e454aca81b0480209cce5081ec52390)
+  file: file1 (record type "C", state "u", hash 60b27f004e454aca81b0480209cce5081ec52390)
     local path: file1 (flags "")
     ancestor path: file1 (node b8e02f6433738021a065f94175c7cd23db5f05be)
     other path: file1 (node null)
-  file: file2 (record type "C", state "r", hash null)
+  file: file2 (record type "C", state "u", hash null)
     local path: file2 (flags "")
     ancestor path: file2 (node 5d9299349fc01ddd25d0070d149b124d8f10411e)
     other path: file2 (node e7c1328648519852e723de86c0c0525acd779257)
--- a/tests/test-merge-force.t	Wed Dec 23 12:41:20 2015 -0800
+++ b/tests/test-merge-force.t	Wed Dec 23 12:51:45 2015 -0800
@@ -143,55 +143,55 @@
 
   $ hg merge -f --tool internal:merge3 'desc("remote")'
   local changed content1_missing_content1_content4-tracked which remote deleted
-  use (c)hanged version, (d)elete, or leave (u)nresolved? c
+  use (c)hanged version, (d)elete, or leave (u)nresolved? u
   local changed content1_missing_content3_content3-tracked which remote deleted
-  use (c)hanged version, (d)elete, or leave (u)nresolved? c
+  use (c)hanged version, (d)elete, or leave (u)nresolved? u
   local changed content1_missing_content3_content4-tracked which remote deleted
-  use (c)hanged version, (d)elete, or leave (u)nresolved? c
+  use (c)hanged version, (d)elete, or leave (u)nresolved? u
   local changed content1_missing_missing_content4-tracked which remote deleted
-  use (c)hanged version, (d)elete, or leave (u)nresolved? c
+  use (c)hanged version, (d)elete, or leave (u)nresolved? u
   remote changed content1_content2_content1_content1-untracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   remote changed content1_content2_content1_content2-untracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   remote changed content1_content2_content1_content4-untracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   remote changed content1_content2_content1_missing-tracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   remote changed content1_content2_content1_missing-untracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   remote changed content1_content2_content2_content1-untracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   remote changed content1_content2_content2_content2-untracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   remote changed content1_content2_content2_content4-untracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   remote changed content1_content2_content2_missing-tracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   remote changed content1_content2_content2_missing-untracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   remote changed content1_content2_content3_content1-untracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   remote changed content1_content2_content3_content2-untracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   remote changed content1_content2_content3_content3-untracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   remote changed content1_content2_content3_content4-untracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   remote changed content1_content2_content3_missing-tracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   remote changed content1_content2_content3_missing-untracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   remote changed content1_content2_missing_content1-untracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   remote changed content1_content2_missing_content2-untracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   remote changed content1_content2_missing_content4-untracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   remote changed content1_content2_missing_missing-tracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   remote changed content1_content2_missing_missing-untracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   merging content1_content2_content1_content4-tracked
   merging content1_content2_content2_content1-tracked
   merging content1_content2_content2_content4-tracked
@@ -215,7 +215,7 @@
   warning: conflicts while merging missing_content2_content3_content4-tracked! (edit, then use 'hg resolve --mark')
   warning: conflicts while merging missing_content2_missing_content4-tracked! (edit, then use 'hg resolve --mark')
   warning: conflicts while merging missing_content2_missing_content4-untracked! (edit, then use 'hg resolve --mark')
-  18 files updated, 28 files merged, 8 files removed, 10 files unresolved
+  18 files updated, 3 files merged, 8 files removed, 35 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
   [1]
 
@@ -227,39 +227,39 @@
 odd 'if force and branchmerge and different' case in manifestmerge().
 
   $ hg resolve -l
-  R content1_content2_content1_content1-untracked
-  R content1_content2_content1_content2-untracked
+  U content1_content2_content1_content1-untracked
+  U content1_content2_content1_content2-untracked
   U content1_content2_content1_content4-tracked
-  R content1_content2_content1_content4-untracked
-  R content1_content2_content1_missing-tracked
-  R content1_content2_content1_missing-untracked
+  U content1_content2_content1_content4-untracked
+  U content1_content2_content1_missing-tracked
+  U content1_content2_content1_missing-untracked
   R content1_content2_content2_content1-tracked
-  R content1_content2_content2_content1-untracked
-  R content1_content2_content2_content2-untracked
+  U content1_content2_content2_content1-untracked
+  U content1_content2_content2_content2-untracked
   U content1_content2_content2_content4-tracked
-  R content1_content2_content2_content4-untracked
-  R content1_content2_content2_missing-tracked
-  R content1_content2_content2_missing-untracked
+  U content1_content2_content2_content4-untracked
+  U content1_content2_content2_missing-tracked
+  U content1_content2_content2_missing-untracked
   R content1_content2_content3_content1-tracked
-  R content1_content2_content3_content1-untracked
-  R content1_content2_content3_content2-untracked
+  U content1_content2_content3_content1-untracked
+  U content1_content2_content3_content2-untracked
   U content1_content2_content3_content3-tracked
-  R content1_content2_content3_content3-untracked
+  U content1_content2_content3_content3-untracked
   U content1_content2_content3_content4-tracked
-  R content1_content2_content3_content4-untracked
-  R content1_content2_content3_missing-tracked
-  R content1_content2_content3_missing-untracked
+  U content1_content2_content3_content4-untracked
+  U content1_content2_content3_missing-tracked
+  U content1_content2_content3_missing-untracked
   R content1_content2_missing_content1-tracked
-  R content1_content2_missing_content1-untracked
-  R content1_content2_missing_content2-untracked
+  U content1_content2_missing_content1-untracked
+  U content1_content2_missing_content2-untracked
   U content1_content2_missing_content4-tracked
-  R content1_content2_missing_content4-untracked
-  R content1_content2_missing_missing-tracked
-  R content1_content2_missing_missing-untracked
-  R content1_missing_content1_content4-tracked
-  R content1_missing_content3_content3-tracked
-  R content1_missing_content3_content4-tracked
-  R content1_missing_missing_content4-tracked
+  U content1_content2_missing_content4-untracked
+  U content1_content2_missing_missing-tracked
+  U content1_content2_missing_missing-untracked
+  U content1_missing_content1_content4-tracked
+  U content1_missing_content3_content3-tracked
+  U content1_missing_content3_content4-tracked
+  U content1_missing_missing_content4-tracked
   U missing_content2_content2_content4-tracked
   U missing_content2_content3_content3-tracked
   U missing_content2_content3_content4-tracked
@@ -705,63 +705,63 @@
   $ hg resolve --unmark --all
   $ hg resolve --all --tool internal:merge3
   remote changed content1_content2_content1_content1-untracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   remote changed content1_content2_content1_content2-untracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   merging content1_content2_content1_content4-tracked
   remote changed content1_content2_content1_content4-untracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   remote changed content1_content2_content1_missing-tracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   remote changed content1_content2_content1_missing-untracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   merging content1_content2_content2_content1-tracked
   remote changed content1_content2_content2_content1-untracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   remote changed content1_content2_content2_content2-untracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   merging content1_content2_content2_content4-tracked
   remote changed content1_content2_content2_content4-untracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   remote changed content1_content2_content2_missing-tracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   remote changed content1_content2_content2_missing-untracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   merging content1_content2_content3_content1-tracked
   remote changed content1_content2_content3_content1-untracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   remote changed content1_content2_content3_content2-untracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   merging content1_content2_content3_content3-tracked
   remote changed content1_content2_content3_content3-untracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   merging content1_content2_content3_content4-tracked
   remote changed content1_content2_content3_content4-untracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   remote changed content1_content2_content3_missing-tracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   remote changed content1_content2_content3_missing-untracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   merging content1_content2_missing_content1-tracked
   remote changed content1_content2_missing_content1-untracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   remote changed content1_content2_missing_content2-untracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   merging content1_content2_missing_content4-tracked
   remote changed content1_content2_missing_content4-untracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   remote changed content1_content2_missing_missing-tracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   remote changed content1_content2_missing_missing-untracked which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   local changed content1_missing_content1_content4-tracked which remote deleted
-  use (c)hanged version, (d)elete, or leave (u)nresolved? c
+  use (c)hanged version, (d)elete, or leave (u)nresolved? u
   local changed content1_missing_content3_content3-tracked which remote deleted
-  use (c)hanged version, (d)elete, or leave (u)nresolved? c
+  use (c)hanged version, (d)elete, or leave (u)nresolved? u
   local changed content1_missing_content3_content4-tracked which remote deleted
-  use (c)hanged version, (d)elete, or leave (u)nresolved? c
+  use (c)hanged version, (d)elete, or leave (u)nresolved? u
   local changed content1_missing_missing_content4-tracked which remote deleted
-  use (c)hanged version, (d)elete, or leave (u)nresolved? c
+  use (c)hanged version, (d)elete, or leave (u)nresolved? u
   merging missing_content2_content2_content4-tracked
   merging missing_content2_content3_content3-tracked
   merging missing_content2_content3_content4-tracked
--- a/tests/test-merge-remove.t	Wed Dec 23 12:41:20 2015 -0800
+++ b/tests/test-merge-remove.t	Wed Dec 23 12:51:45 2015 -0800
@@ -103,10 +103,11 @@
 
   $ hg merge -f
   remote changed bar which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
   merging foo1 and foo to foo1
-  0 files updated, 2 files merged, 0 files removed, 0 files unresolved
-  (branch merge, don't forget to commit)
+  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
+  [1]
   $ cat bar
   bleh
   $ hg st
--- a/tests/test-rename-merge2.t	Wed Dec 23 12:41:20 2015 -0800
+++ b/tests/test-rename-merge2.t	Wed Dec 23 12:51:45 2015 -0800
@@ -684,7 +684,7 @@
    a: prompt deleted/changed -> m (premerge)
   picked tool ':prompt' for a (binary False symlink False changedelete True)
   remote changed a which local deleted
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
    b: both created -> m (premerge)
   picked tool 'python ../merge' for b (binary False symlink False changedelete False)
   merging b
@@ -703,11 +703,12 @@
   my rev@02963e448370+ other rev@8dbce441892a ancestor rev@924404dff337
   launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
-  0 files updated, 3 files merged, 0 files removed, 0 files unresolved
-  (branch merge, don't forget to commit)
+  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
   --------------
   M a
   M b
+  abort: unresolved merge conflicts (see "hg help resolve")
   --------------
   
   $ tm "up a b" "nm a b" "      " "19 merge b no ancestor, prompt remove a"
@@ -727,7 +728,7 @@
    a: prompt changed/deleted -> m (premerge)
   picked tool ':prompt' for a (binary False symlink False changedelete True)
   local changed a which remote deleted
-  use (c)hanged version, (d)elete, or leave (u)nresolved? c
+  use (c)hanged version, (d)elete, or leave (u)nresolved? u
    b: both created -> m (premerge)
   picked tool 'python ../merge' for b (binary False symlink False changedelete False)
   merging b
@@ -746,11 +747,12 @@
   my rev@0b76e65c8289+ other rev@bdb19105162a ancestor rev@924404dff337
   launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
-  0 files updated, 3 files merged, 0 files removed, 0 files unresolved
-  (branch merge, don't forget to commit)
+  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
   --------------
   M b
   C a
+  abort: unresolved merge conflicts (see "hg help resolve")
   --------------
   
   $ tm "up a  " "um a b" "      " "20 merge a and b to b, remove a"