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