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.
--- a/mercurial/filemerge.py Tue Nov 10 17:10:47 2015 -0800
+++ b/mercurial/filemerge.py Tue Nov 10 17:13:16 2015 -0800
@@ -175,15 +175,19 @@
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):
--- a/tests/test-merge-tools.t Tue Nov 10 17:10:47 2015 -0800
+++ b/tests/test-merge-tools.t Tue Nov 10 17:13:16 2015 -0800
@@ -544,6 +544,41 @@
# 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