Mercurial > hg
comparison mercurial/filemerge.py @ 38793:6c8e3c847977
resolve: add option to warn/abort on -m with unresolved conflict markers
When a user is dropped out of Mercurial to a terminal to resolve files, we emit
messages like:
conflicts while merging file1! (edit, then use 'hg resolve --mark')
conflicts while merging file2! (edit, then use 'hg resolve --mark')
We don't mention a file name in the hint, so some users might do something like
`$EDITOR file1; hg resolve --mark`, see that it says "(no more unresolved
files)" and forget to deal with file2 before running the next command.
Even if we did mention a file name in the hint, it's too easy to forget it
(maybe the merge spans a couple days or something). This option lets us inform
the user that they might have missed something.
In the scenario above, the output would be something like:
warning: the following files still have conflict markers:
file2
(no more unresolved files)
Differential Revision: https://phab.mercurial-scm.org/D4035
author | Kyle Lippincott <spectral@google.com> |
---|---|
date | Thu, 26 Jul 2018 17:11:03 -0700 |
parents | 2ce60954b1b7 |
children | 0e58c5b20745 |
comparison
equal
deleted
inserted
replaced
38792:afb442f58cbf | 38793:6c8e3c847977 |
---|---|
914 _haltmerge() | 914 _haltmerge() |
915 if action == 'halt': | 915 if action == 'halt': |
916 _haltmerge() | 916 _haltmerge() |
917 # default action is 'continue', in which case we neither prompt nor halt | 917 # default action is 'continue', in which case we neither prompt nor halt |
918 | 918 |
919 def hasconflictmarkers(data): | |
920 return bool(re.search("^(<<<<<<< .*|=======|>>>>>>> .*)$", data, | |
921 re.MULTILINE)) | |
922 | |
919 def _check(repo, r, ui, tool, fcd, files): | 923 def _check(repo, r, ui, tool, fcd, files): |
920 fd = fcd.path() | 924 fd = fcd.path() |
921 unused, unused, unused, back = files | 925 unused, unused, unused, back = files |
922 | 926 |
923 if not r and (_toolbool(ui, tool, "checkconflicts") or | 927 if not r and (_toolbool(ui, tool, "checkconflicts") or |
924 'conflicts' in _toollist(ui, tool, "check")): | 928 'conflicts' in _toollist(ui, tool, "check")): |
925 if re.search("^(<<<<<<< .*|=======|>>>>>>> .*)$", fcd.data(), | 929 if hasconflictmarkers(fcd.data()): |
926 re.MULTILINE): | |
927 r = 1 | 930 r = 1 |
928 | 931 |
929 checked = False | 932 checked = False |
930 if 'prompt' in _toollist(ui, tool, "check"): | 933 if 'prompt' in _toollist(ui, tool, "check"): |
931 checked = True | 934 checked = True |