[PATCH 2 of 3 STABLE?] filemerge: treat EOF at prompt as fail, not abort
Siddharth Agarwal
sid0 at fb.com
Tue Nov 10 19:20:28 CST 2015
# HG changeset patch
# User Siddharth Agarwal <sid0 at fb.com>
# Date 1447204396 28800
# Tue Nov 10 17:13:16 2015 -0800
# Node ID 0829cdf6d0d3da14077f4de0d73c8bddf6190f06
# Parent 625d11b1fc9b3709335b885ccdd753e3062f1ab3
filemerge: treat EOF at prompt as fail, not abort
Previously we'd abort the merge entirely if there was an EOF at the prompt.
This is unnecessary -- it's much better to simply fail and treat the file as
unresolved instead.
diff --git a/mercurial/filemerge.py b/mercurial/filemerge.py
--- a/mercurial/filemerge.py
+++ b/mercurial/filemerge.py
@@ -175,15 +175,19 @@ def _iprompt(repo, mynode, orig, fcd, fc
ui = repo.ui
fd = fcd.path()
- 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]
+ try:
+ 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]
- if choice == 'other':
- return _iother(repo, mynode, orig, fcd, fco, fca, toolconf)
- else:
- return _ilocal(repo, mynode, orig, fcd, fco, fca, toolconf)
+ if choice == 'other':
+ return _iother(repo, mynode, orig, fcd, fco, fca, toolconf)
+ else:
+ return _ilocal(repo, mynode, orig, fcd, fco, fca, toolconf)
+ except error.ResponseExpected:
+ ui.write("\n")
+ return 1
@internaltool('local', nomerge)
def _ilocal(repo, mynode, orig, fcd, fco, fca, toolconf):
diff --git a/tests/test-merge-tools.t b/tests/test-merge-tools.t
--- a/tests/test-merge-tools.t
+++ b/tests/test-merge-tools.t
@@ -544,6 +544,41 @@ ui.merge specifies internal:prompt:
# hg resolve --list
R f
+prompt with EOF
+
+ $ beforemerge
+ [merge-tools]
+ false.whatever=
+ true.priority=1
+ true.executable=cat
+ # 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?
+ 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
+ $ 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?
+ [1]
+ $ aftermerge
+ # cat f
+ revision 1
+ space
+ # hg stat
+ M f
+ ? f.orig
+ # hg resolve --list
+ U f
ui.merge specifies internal:dump:
$ beforemerge
More information about the Mercurial-devel
mailing list