Patchwork [3,of,4,mergedriver] filemerge: add a 'leave unresolved' option to change/delete prompts

login
register
mail settings
Submitter Siddharth Agarwal
Date Dec. 1, 2015, 5:57 p.m.
Message ID <742869a0c53d2f50f835.1448992664@dev666.prn1.facebook.com>
Download mbox | patch
Permalink /patch/11713/
State Accepted
Headers show

Comments

Siddharth Agarwal - Dec. 1, 2015, 5:57 p.m.
# HG changeset patch
# User Siddharth Agarwal <sid0@fb.com>
# Date 1448919835 28800
#      Mon Nov 30 13:43:55 2015 -0800
# Node ID 742869a0c53d2f50f835aad600b8609dcdd5229c
# Parent  2d05f064d2e6fb76f91b4efef37eab7cb3e08d3b
# Available At http://42.netv6.net/sid0-wip/hg/
#              hg pull http://42.netv6.net/sid0-wip/hg/ -r 742869a0c53d
filemerge: add a 'leave unresolved' option to change/delete prompts

We're going to make this option the default in an upcoming patch.
Martin von Zweigbergk - Dec. 1, 2015, 10:27 p.m.
On Tue, Dec 1, 2015 at 12:48 PM Siddharth Agarwal <sid0@fb.com> wrote:

> diff --git a/tests/test-merge-types.t b/tests/test-merge-types.t
> --- a/tests/test-merge-types.t
> +++ b/tests/test-merge-types.t
> @@ -172,8 +172,10 @@ Update to link with local change should
>    (couldn't find merge tool hgmerge|tool hgmerge can't handle symlinks)
> (re)
>    picked tool ':prompt' for a (binary False symlink True changedelete
> False)
>    no tool found to merge a
> -  keep (l)ocal, take (o)ther, or leave (u)nresolved? l
> -  0 files updated, 1 files merged, 0 files removed, 0 files unresolved
> +  keep (l)ocal, take (o)ther, or leave (u)nresolved? u
> +  0 files updated, 0 files merged, 0 files removed, 1 files unresolved
> +  use 'hg resolve' to retry unresolved file merges
> +  [1]
>

This hunk surprised me, and it turns out the test case fails. Moving this
to 4/4 in flight.
Siddharth Agarwal - Dec. 1, 2015, 10:29 p.m.
On 12/1/15 14:27, Martin von Zweigbergk wrote:
>
>
> On Tue, Dec 1, 2015 at 12:48 PM Siddharth Agarwal <sid0@fb.com 
> <mailto:sid0@fb.com>> wrote:
>
>     diff --git a/tests/test-merge-types.t b/tests/test-merge-types.t
>     --- a/tests/test-merge-types.t
>     +++ b/tests/test-merge-types.t
>     @@ -172,8 +172,10 @@ Update to link with local change should
>        (couldn't find merge tool hgmerge|tool hgmerge can't handle
>     symlinks) (re)
>        picked tool ':prompt' for a (binary False symlink True
>     changedelete False)
>        no tool found to merge a
>     -  keep (l)ocal, take (o)ther, or leave (u)nresolved? l
>     -  0 files updated, 1 files merged, 0 files removed, 0 files
>     unresolved
>     +  keep (l)ocal, take (o)ther, or leave (u)nresolved? u
>     +  0 files updated, 0 files merged, 0 files removed, 1 files
>     unresolved
>     +  use 'hg resolve' to retry unresolved file merges
>     +  [1]
>
>
> This hunk surprised me, and it turns out the test case fails. Moving 
> this to 4/4 in flight.

Whoops, rolled it into the wrong commit. Thanks for catching!

- Siddharth

>
>
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel@selenic.com
> https://selenic.com/mailman/listinfo/mercurial-devel

Patch

diff --git a/mercurial/filemerge.py b/mercurial/filemerge.py
--- a/mercurial/filemerge.py
+++ b/mercurial/filemerge.py
@@ -239,15 +239,16 @@  def _iprompt(repo, mynode, orig, fcd, fc
         if fco.isabsent():
             index = ui.promptchoice(
                 _("local changed %s which remote deleted\n"
-                  "use (c)hanged version or (d)elete?"
-                  "$$ &Changed $$ &Delete") % fd, 0)
-            choice = ['local', 'other'][index]
+                  "use (c)hanged version, (d)elete, or leave (u)nresolved?"
+                  "$$ &Changed $$ &Delete $$ &Unresolved") % fd, 0)
+            choice = ['local', 'other', 'unresolved'][index]
         elif fcd.isabsent():
             index = ui.promptchoice(
                 _("remote changed %s which local deleted\n"
-                  "use (c)hanged version or leave (d)eleted?"
-                  "$$ &Changed $$ &Deleted") % fd, 0)
-            choice = ['other', 'local'][index]
+                  "use (c)hanged version, leave (d)eleted, or "
+                  "leave (u)nresolved?"
+                  "$$ &Changed $$ &Deleted $$ &Unresolved") % fd, 0)
+            choice = ['other', 'local', 'unresolved'][index]
         else:
             index = ui.promptchoice(
                 _("no tool found to merge %s\n"
diff --git a/tests/test-commit-amend.t b/tests/test-commit-amend.t
--- a/tests/test-commit-amend.t
+++ b/tests/test-commit-amend.t
@@ -812,7 +812,7 @@  Amend a merge changeset (with manifest-l
   $ hg ci -m aa
   $ hg merge -q bar
   local changed aa which remote deleted
-  use (c)hanged version or (d)elete? c
+  use (c)hanged version, (d)elete, or leave (u)nresolved? c
   $ hg ci -m 'merge bar (with conflicts)'
   $ hg log --config diff.git=1 -pr .
   changeset:   33:97a298b0c59f
diff --git a/tests/test-copy-move-merge.t b/tests/test-copy-move-merge.t
--- a/tests/test-copy-move-merge.t
+++ b/tests/test-copy-move-merge.t
@@ -83,7 +83,7 @@  Test disabling copy tracing
   $ hg rebase --keep -d 1 -b 2 --config extensions.rebase= --config experimental.disablecopytrace=True
   rebasing 2:add3f11052fa "other" (tip)
   remote changed a which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
 
   $ cat b
   1
diff --git a/tests/test-largefiles-update.t b/tests/test-largefiles-update.t
--- a/tests/test-largefiles-update.t
+++ b/tests/test-largefiles-update.t
@@ -596,7 +596,7 @@  the 1st commit of resuming.
   rebasing 1:72518492caa6 "#1"
   rebasing 4:07d6153b5c04 "#4"
   local changed .hglf/large1 which remote deleted
-  use (c)hanged version or (d)elete? c
+  use (c)hanged version, (d)elete, or leave (u)nresolved? c
 
   $ hg diff -c "tip~1" --nodates .hglf/large1 | grep '^[+-][0-9a-z]'
   -e5bb990443d6a92aaf7223813720f7566c9dd05b
diff --git a/tests/test-merge-changedelete.t b/tests/test-merge-changedelete.t
--- a/tests/test-merge-changedelete.t
+++ b/tests/test-merge-changedelete.t
@@ -55,9 +55,9 @@  Non-interactive merge:
 
   $ hg merge -y
   local changed file1 which remote deleted
-  use (c)hanged version or (d)elete? c
+  use (c)hanged version, (d)elete, or leave (u)nresolved? c
   remote changed file2 which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   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
@@ -114,9 +114,9 @@  Interactive merge:
   > d
   > EOF
   local changed file1 which remote deleted
-  use (c)hanged version or (d)elete? c
+  use (c)hanged version, (d)elete, or leave (u)nresolved? c
   remote changed file2 which local deleted
-  use (c)hanged version or leave (d)eleted? d
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? d
   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
@@ -174,18 +174,18 @@  Interactive merge with bad input:
   > c
   > EOF
   local changed file1 which remote deleted
-  use (c)hanged version or (d)elete? foo
+  use (c)hanged version, (d)elete, or leave (u)nresolved? foo
   unrecognized response
   local changed file1 which remote deleted
-  use (c)hanged version or (d)elete? bar
+  use (c)hanged version, (d)elete, or leave (u)nresolved? bar
   unrecognized response
   local changed file1 which remote deleted
-  use (c)hanged version or (d)elete? d
+  use (c)hanged version, (d)elete, or leave (u)nresolved? d
   remote changed file2 which local deleted
-  use (c)hanged version or leave (d)eleted? baz
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? baz
   unrecognized response
   remote changed file2 which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   merging file3
   warning: conflicts while merging file3! (edit, then use 'hg resolve --mark')
   0 files updated, 1 files merged, 1 files removed, 1 files unresolved
@@ -239,9 +239,9 @@  Interactive merge with not enough input:
   > d
   > EOF
   local changed file1 which remote deleted
-  use (c)hanged version or (d)elete? d
+  use (c)hanged version, (d)elete, or leave (u)nresolved? d
   remote changed file2 which local deleted
-  use (c)hanged version or leave (d)eleted? 
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? 
   merging file3
   warning: conflicts while merging file3! (edit, then use 'hg resolve --mark')
   0 files updated, 0 files merged, 1 files removed, 2 files unresolved
@@ -418,9 +418,9 @@  Force prompts with no input (should be s
 
   $ hg merge --config ui.interactive=True --tool :prompt
   local changed file1 which remote deleted
-  use (c)hanged version or (d)elete? 
+  use (c)hanged version, (d)elete, or leave (u)nresolved? 
   remote changed file2 which local deleted
-  use (c)hanged version or leave (d)eleted? 
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? 
   no tool found to merge file3
   keep (l)ocal, take (o)ther, or leave (u)nresolved? 
   0 files updated, 0 files merged, 0 files removed, 3 files unresolved
@@ -470,9 +470,9 @@  Force prompts
 
   $ hg merge --tool :prompt
   local changed file1 which remote deleted
-  use (c)hanged version or (d)elete? c
+  use (c)hanged version, (d)elete, or leave (u)nresolved? c
   remote changed file2 which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   no tool found to merge file3
   keep (l)ocal, take (o)ther, or leave (u)nresolved? l
   0 files updated, 3 files merged, 0 files removed, 0 files unresolved
@@ -519,9 +519,9 @@  Choose to merge all files
 
   $ hg merge --tool :merge3
   local changed file1 which remote deleted
-  use (c)hanged version or (d)elete? c
+  use (c)hanged version, (d)elete, or leave (u)nresolved? c
   remote changed file2 which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   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
@@ -603,9 +603,9 @@  invocations.)
   
   === :other -> :prompt ===
   local changed file1 which remote deleted
-  use (c)hanged version or (d)elete? 
+  use (c)hanged version, (d)elete, or leave (u)nresolved? 
   remote changed file2 which local deleted
-  use (c)hanged version or leave (d)eleted? 
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? 
   no tool found to merge file3
   keep (l)ocal, take (o)ther, or leave (u)nresolved? 
   --- diff of status ---
@@ -632,9 +632,9 @@  invocations.)
   
   === :local -> :prompt ===
   local changed file1 which remote deleted
-  use (c)hanged version or (d)elete? 
+  use (c)hanged version, (d)elete, or leave (u)nresolved? 
   remote changed file2 which local deleted
-  use (c)hanged version or leave (d)eleted? 
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? 
   no tool found to merge file3
   keep (l)ocal, take (o)ther, or leave (u)nresolved? 
   --- diff of status ---
@@ -651,9 +651,9 @@  invocations.)
   
   === :fail -> :prompt ===
   local changed file1 which remote deleted
-  use (c)hanged version or (d)elete? 
+  use (c)hanged version, (d)elete, or leave (u)nresolved? 
   remote changed file2 which local deleted
-  use (c)hanged version or leave (d)eleted? 
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? 
   no tool found to merge file3
   keep (l)ocal, take (o)ther, or leave (u)nresolved? 
   --- diff of status ---
@@ -678,9 +678,9 @@  Non-interactive linear update
   $ hg rm file2
   $ hg update 1 -y
   local changed file1 which remote deleted
-  use (c)hanged version or (d)elete? c
+  use (c)hanged version, (d)elete, or leave (u)nresolved? c
   remote changed file2 which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   1 files updated, 2 files merged, 0 files removed, 0 files unresolved
   $ status
   --- status ---
@@ -832,9 +832,9 @@  Force prompts with no input
   $ hg rm file2
   $ hg update 1 --config ui.interactive=True --tool :prompt
   local changed file1 which remote deleted
-  use (c)hanged version or (d)elete? 
+  use (c)hanged version, (d)elete, or leave (u)nresolved? 
   remote changed file2 which local deleted
-  use (c)hanged version or leave (d)eleted? 
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? 
   1 files updated, 0 files merged, 0 files removed, 2 files unresolved
   use 'hg resolve' to retry unresolved file merges
   [1]
@@ -877,9 +877,9 @@  Choose to merge all files
   $ hg rm file2
   $ hg update 1 --tool :merge3
   local changed file1 which remote deleted
-  use (c)hanged version or (d)elete? c
+  use (c)hanged version, (d)elete, or leave (u)nresolved? c
   remote changed file2 which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   1 files updated, 2 files merged, 0 files removed, 0 files unresolved
   $ status
   --- status ---
@@ -926,9 +926,9 @@  Test transitions between different merge
   
   === :other -> :prompt ===
   local changed file1 which remote deleted
-  use (c)hanged version or (d)elete? 
+  use (c)hanged version, (d)elete, or leave (u)nresolved? 
   remote changed file2 which local deleted
-  use (c)hanged version or leave (d)eleted? 
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? 
   --- diff of status ---
   (status identical)
   
@@ -953,9 +953,9 @@  Test transitions between different merge
   
   === :local -> :prompt ===
   local changed file1 which remote deleted
-  use (c)hanged version or (d)elete? 
+  use (c)hanged version, (d)elete, or leave (u)nresolved? 
   remote changed file2 which local deleted
-  use (c)hanged version or leave (d)eleted? 
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? 
   --- diff of status ---
   (status identical)
   
@@ -970,9 +970,9 @@  Test transitions between different merge
   
   === :fail -> :prompt ===
   local changed file1 which remote deleted
-  use (c)hanged version or (d)elete? 
+  use (c)hanged version, (d)elete, or leave (u)nresolved? 
   remote changed file2 which local deleted
-  use (c)hanged version or leave (d)eleted? 
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? 
   --- diff of status ---
   (status identical)
   
diff --git a/tests/test-merge-force.t b/tests/test-merge-force.t
--- a/tests/test-merge-force.t
+++ b/tests/test-merge-force.t
@@ -143,55 +143,55 @@  Merge with remote
 
   $ hg merge -f --tool internal:merge3 'desc("remote")'
   local changed content1_missing_content1_content4-tracked which remote deleted
-  use (c)hanged version or (d)elete? c
+  use (c)hanged version, (d)elete, or leave (u)nresolved? c
   local changed content1_missing_content3_content3-tracked which remote deleted
-  use (c)hanged version or (d)elete? c
+  use (c)hanged version, (d)elete, or leave (u)nresolved? c
   local changed content1_missing_content3_content4-tracked which remote deleted
-  use (c)hanged version or (d)elete? c
+  use (c)hanged version, (d)elete, or leave (u)nresolved? c
   local changed content1_missing_missing_content4-tracked which remote deleted
-  use (c)hanged version or (d)elete? c
+  use (c)hanged version, (d)elete, or leave (u)nresolved? c
   remote changed content1_content2_content1_content1-untracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   remote changed content1_content2_content1_content2-untracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   remote changed content1_content2_content1_content4-untracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   remote changed content1_content2_content1_missing-tracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   remote changed content1_content2_content1_missing-untracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   remote changed content1_content2_content2_content1-untracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   remote changed content1_content2_content2_content2-untracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   remote changed content1_content2_content2_content4-untracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   remote changed content1_content2_content2_missing-tracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   remote changed content1_content2_content2_missing-untracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   remote changed content1_content2_content3_content1-untracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   remote changed content1_content2_content3_content2-untracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   remote changed content1_content2_content3_content3-untracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   remote changed content1_content2_content3_content4-untracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   remote changed content1_content2_content3_missing-tracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   remote changed content1_content2_content3_missing-untracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   remote changed content1_content2_missing_content1-untracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   remote changed content1_content2_missing_content2-untracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   remote changed content1_content2_missing_content4-untracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   remote changed content1_content2_missing_missing-tracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   remote changed content1_content2_missing_missing-untracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   merging content1_content2_content1_content4-tracked
   merging content1_content2_content2_content1-tracked
   merging content1_content2_content2_content4-tracked
@@ -705,63 +705,63 @@  Re-resolve and check status
   $ hg resolve --unmark --all
   $ hg resolve --all --tool internal:merge3
   remote changed content1_content2_content1_content1-untracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   remote changed content1_content2_content1_content2-untracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   merging content1_content2_content1_content4-tracked
   remote changed content1_content2_content1_content4-untracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   remote changed content1_content2_content1_missing-tracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   remote changed content1_content2_content1_missing-untracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   merging content1_content2_content2_content1-tracked
   remote changed content1_content2_content2_content1-untracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   remote changed content1_content2_content2_content2-untracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   merging content1_content2_content2_content4-tracked
   remote changed content1_content2_content2_content4-untracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   remote changed content1_content2_content2_missing-tracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   remote changed content1_content2_content2_missing-untracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   merging content1_content2_content3_content1-tracked
   remote changed content1_content2_content3_content1-untracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   remote changed content1_content2_content3_content2-untracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   merging content1_content2_content3_content3-tracked
   remote changed content1_content2_content3_content3-untracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   merging content1_content2_content3_content4-tracked
   remote changed content1_content2_content3_content4-untracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   remote changed content1_content2_content3_missing-tracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   remote changed content1_content2_content3_missing-untracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   merging content1_content2_missing_content1-tracked
   remote changed content1_content2_missing_content1-untracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   remote changed content1_content2_missing_content2-untracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   merging content1_content2_missing_content4-tracked
   remote changed content1_content2_missing_content4-untracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   remote changed content1_content2_missing_missing-tracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   remote changed content1_content2_missing_missing-untracked which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   local changed content1_missing_content1_content4-tracked which remote deleted
-  use (c)hanged version or (d)elete? c
+  use (c)hanged version, (d)elete, or leave (u)nresolved? c
   local changed content1_missing_content3_content3-tracked which remote deleted
-  use (c)hanged version or (d)elete? c
+  use (c)hanged version, (d)elete, or leave (u)nresolved? c
   local changed content1_missing_content3_content4-tracked which remote deleted
-  use (c)hanged version or (d)elete? c
+  use (c)hanged version, (d)elete, or leave (u)nresolved? c
   local changed content1_missing_missing_content4-tracked which remote deleted
-  use (c)hanged version or (d)elete? c
+  use (c)hanged version, (d)elete, or leave (u)nresolved? c
   merging missing_content2_content2_content4-tracked
   merging missing_content2_content3_content3-tracked
   merging missing_content2_content3_content4-tracked
diff --git a/tests/test-merge-remove.t b/tests/test-merge-remove.t
--- a/tests/test-merge-remove.t
+++ b/tests/test-merge-remove.t
@@ -103,7 +103,7 @@  Those who use force will lose
 
   $ hg merge -f
   remote changed bar which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   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)
diff --git a/tests/test-merge-types.t b/tests/test-merge-types.t
--- a/tests/test-merge-types.t
+++ b/tests/test-merge-types.t
@@ -172,8 +172,10 @@  Update to link with local change should 
   (couldn't find merge tool hgmerge|tool hgmerge can't handle symlinks) (re)
   picked tool ':prompt' for a (binary False symlink True changedelete False)
   no tool found to merge a
-  keep (l)ocal, take (o)ther, or leave (u)nresolved? l
-  0 files updated, 1 files merged, 0 files removed, 0 files unresolved
+  keep (l)ocal, take (o)ther, or leave (u)nresolved? u
+  0 files updated, 0 files merged, 0 files removed, 1 files unresolved
+  use 'hg resolve' to retry unresolved file merges
+  [1]
   $ hg diff --git
   diff --git a/a b/a
   old mode 120000
diff --git a/tests/test-rebase-newancestor.t b/tests/test-rebase-newancestor.t
--- a/tests/test-rebase-newancestor.t
+++ b/tests/test-rebase-newancestor.t
@@ -134,7 +134,7 @@  Full rebase all the way back from branch
   rebasing 2:ec2c14fb2984 "dev: f-dev stuff"
   rebasing 4:4b019212aaf6 "dev: merge default"
   remote changed f-default which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   rebasing 6:9455ee510502 "dev: merge default"
   saved backup bundle to $TESTTMP/ancestor-merge/.hg/strip-backup/1d1a643d390e-43e9e04b-backup.hg (glob)
   $ hg tglog
@@ -161,7 +161,7 @@  Grafty cherry picking rebasing:
   rebasing 2:ec2c14fb2984 "dev: f-dev stuff"
   rebasing 4:4b019212aaf6 "dev: merge default"
   remote changed f-default which local deleted
-  use (c)hanged version or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
   rebasing 6:9455ee510502 "dev: merge default"
   saved backup bundle to $TESTTMP/ancestor-merge-2/.hg/strip-backup/ec2c14fb2984-62d0b222-backup.hg (glob)
   $ hg tglog
diff --git a/tests/test-rename-merge2.t b/tests/test-rename-merge2.t
--- a/tests/test-rename-merge2.t
+++ b/tests/test-rename-merge2.t
@@ -684,7 +684,7 @@  m "um a c" "um x c" "      " "10 do merg
    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 or leave (d)eleted? c
+  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
    b: both created -> m (premerge)
   picked tool 'python ../merge' for b (binary False symlink False changedelete False)
   merging b
@@ -727,7 +727,7 @@  m "um a c" "um x c" "      " "10 do merg
    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 or (d)elete? c
+  use (c)hanged version, (d)elete, or leave (u)nresolved? c
    b: both created -> m (premerge)
   picked tool 'python ../merge' for b (binary False symlink False changedelete False)
   merging b