# HG changeset patch # User Siddharth Agarwal # Date 1448911038 28800 # Node ID 4ab69be0ea15572503fafbb1aa0ee106f13ef9a8 # Parent 296d55def9c45b9ac5f364b24b1a2d5ae8d84651 filemerge: add a 'leave unresolved' option to regular prompts 'Regular' here means anything that isn't a change/delete prompt. We'll add this option to change/delete prompts in a subsequent patch. diff -r 296d55def9c4 -r 4ab69be0ea15 mercurial/filemerge.py --- a/mercurial/filemerge.py Wed Nov 25 14:25:26 2015 -0800 +++ b/mercurial/filemerge.py Mon Nov 30 11:17:18 2015 -0800 @@ -249,15 +249,18 @@ "$$ &Changed $$ &Deleted") % fd, 0) choice = ['other', 'local'][index] else: - index = ui.promptchoice(_("no tool found to merge %s\n" - "keep (l)ocal or take (o)ther?" - "$$ &Local $$ &Other") % fd, 0) - choice = ['local', 'other'][index] + index = ui.promptchoice( + _("no tool found to merge %s\n" + "keep (l)ocal, take (o)ther, or leave (u)nresolved?" + "$$ &Local $$ &Other $$ &Unresolved") % fd, 0) + choice = ['local', 'other', 'unresolved'][index] if choice == 'other': return _iother(repo, mynode, orig, fcd, fco, fca, toolconf) - else: + elif choice == 'local': return _ilocal(repo, mynode, orig, fcd, fco, fca, toolconf) + elif choice == 'unresolved': + return _ifail(repo, mynode, orig, fcd, fco, fca, toolconf) except error.ResponseExpected: ui.write("\n") return _ifail(repo, mynode, orig, fcd, fco, fca, toolconf) diff -r 296d55def9c4 -r 4ab69be0ea15 tests/test-merge-changedelete.t --- a/tests/test-merge-changedelete.t Wed Nov 25 14:25:26 2015 -0800 +++ b/tests/test-merge-changedelete.t Mon Nov 30 11:17:18 2015 -0800 @@ -422,7 +422,7 @@ remote changed file2 which local deleted use (c)hanged version or leave (d)eleted? no tool found to merge file3 - keep (l)ocal or take (o)ther? + keep (l)ocal, take (o)ther, or leave (u)nresolved? 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] @@ -474,7 +474,7 @@ remote changed file2 which local deleted use (c)hanged version or leave (d)eleted? c no tool found to merge file3 - keep (l)ocal or take (o)ther? l + keep (l)ocal, take (o)ther, or leave (u)nresolved? l 0 files updated, 3 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) $ status @@ -607,7 +607,7 @@ remote changed file2 which local deleted use (c)hanged version or leave (d)eleted? no tool found to merge file3 - keep (l)ocal or take (o)ther? + keep (l)ocal, take (o)ther, or leave (u)nresolved? --- diff of status --- (status identical) @@ -636,7 +636,7 @@ remote changed file2 which local deleted use (c)hanged version or leave (d)eleted? no tool found to merge file3 - keep (l)ocal or take (o)ther? + keep (l)ocal, take (o)ther, or leave (u)nresolved? --- diff of status --- (status identical) @@ -655,7 +655,7 @@ remote changed file2 which local deleted use (c)hanged version or leave (d)eleted? no tool found to merge file3 - keep (l)ocal or take (o)ther? + keep (l)ocal, take (o)ther, or leave (u)nresolved? --- diff of status --- (status identical) diff -r 296d55def9c4 -r 4ab69be0ea15 tests/test-merge-tools.t --- a/tests/test-merge-tools.t Wed Nov 25 14:25:26 2015 -0800 +++ b/tests/test-merge-tools.t Mon Nov 30 11:17:18 2015 -0800 @@ -532,7 +532,7 @@ # hg update -C 1 $ hg merge -r 2 --config ui.merge=internal:prompt no tool found to merge f - keep (l)ocal or take (o)ther? l + keep (l)ocal, take (o)ther, or leave (u)nresolved? l 0 files updated, 1 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) $ aftermerge @@ -544,6 +544,31 @@ # hg resolve --list R f +ui.merge specifies :prompt, with 'leave unresolved' chosen + + $ beforemerge + [merge-tools] + false.whatever= + true.priority=1 + true.executable=cat + # hg update -C 1 + $ hg merge -r 2 --config ui.merge=:prompt --config ui.interactive=True << EOF + > u + > EOF + no tool found to merge f + 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 or 'hg update -C .' to abandon + [1] + $ aftermerge + # cat f + revision 1 + space + # hg stat + M f + # hg resolve --list + U f + prompt with EOF $ beforemerge @@ -554,7 +579,7 @@ # hg update -C 1 $ hg merge -r 2 --config ui.merge=internal:prompt --config ui.interactive=true no tool found to merge f - keep (l)ocal or take (o)ther? + keep (l)ocal, take (o)ther, or leave (u)nresolved? 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] @@ -568,7 +593,7 @@ U f $ hg resolve --all --config ui.merge=internal:prompt --config ui.interactive=true no tool found to merge f - keep (l)ocal or take (o)ther? + keep (l)ocal, take (o)ther, or leave (u)nresolved? [1] $ aftermerge # cat f @@ -582,7 +607,7 @@ $ rm f $ hg resolve --all --config ui.merge=internal:prompt --config ui.interactive=true no tool found to merge f - keep (l)ocal or take (o)ther? + keep (l)ocal, take (o)ther, or leave (u)nresolved? [1] $ aftermerge # cat f @@ -594,7 +619,7 @@ U f $ hg resolve --all --config ui.merge=internal:prompt no tool found to merge f - keep (l)ocal or take (o)ther? l + keep (l)ocal, take (o)ther, or leave (u)nresolved? l (no more unresolved files) $ aftermerge # cat f diff -r 296d55def9c4 -r 4ab69be0ea15 tests/test-merge-types.t --- a/tests/test-merge-types.t Wed Nov 25 14:25:26 2015 -0800 +++ b/tests/test-merge-types.t Mon Nov 30 11:17:18 2015 -0800 @@ -172,7 +172,7 @@ (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 or take (o)ther? l + keep (l)ocal, take (o)ther, or leave (u)nresolved? l 0 files updated, 1 files merged, 0 files removed, 0 files unresolved $ hg diff --git diff --git a/a b/a