Mercurial > hg-stable
changeset 26898:33eb8a56d0c9
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.
author | Siddharth Agarwal <sid0@fb.com> |
---|---|
date | Tue, 10 Nov 2015 17:13:16 -0800 |
parents | da1c706c9a35 |
children | 5f88e092f82c |
files | mercurial/filemerge.py tests/test-merge-tools.t |
diffstat | 2 files changed, 47 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- 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