##// END OF EJS Templates
resolve: add option to warn/abort on -m with unresolved conflict markers...
Kyle Lippincott -
r38829:6c8e3c84 default
parent child Browse files
Show More
@@ -35,6 +35,7 b' from . import ('
35 35 error,
36 36 exchange,
37 37 extensions,
38 filemerge,
38 39 formatter,
39 40 graphmod,
40 41 hbisect,
@@ -4594,6 +4595,9 b' def resolve(ui, repo, *pats, **opts):'
4594 4595 runconclude = False
4595 4596
4596 4597 tocomplete = []
4598 hasconflictmarkers = []
4599 if mark:
4600 markcheck = ui.config('experimental', 'resolve.mark-check')
4597 4601 for f in ms:
4598 4602 if not m(f):
4599 4603 continue
@@ -4629,6 +4633,12 b' def resolve(ui, repo, *pats, **opts):'
4629 4633 continue
4630 4634
4631 4635 if mark:
4636 if markcheck:
4637 with repo.wvfs(f) as fobj:
4638 fdata = fobj.read()
4639 if filemerge.hasconflictmarkers(fdata) and \
4640 ms[f] != mergemod.MERGE_RECORD_RESOLVED:
4641 hasconflictmarkers.append(f)
4632 4642 ms.mark(f, mergemod.MERGE_RECORD_RESOLVED)
4633 4643 elif unmark:
4634 4644 ms.mark(f, mergemod.MERGE_RECORD_UNRESOLVED)
@@ -4663,6 +4673,13 b' def resolve(ui, repo, *pats, **opts):'
4663 4673 if inst.errno != errno.ENOENT:
4664 4674 raise
4665 4675
4676 if hasconflictmarkers:
4677 ui.warn(_('warning: the following files still have conflict '
4678 'markers:\n ') + '\n '.join(hasconflictmarkers) + '\n')
4679 if markcheck == 'abort' and not all:
4680 raise error.Abort(_('conflict markers detected'),
4681 hint=_('use --all to mark anyway'))
4682
4666 4683 for f in tocomplete:
4667 4684 try:
4668 4685 # resolve file
@@ -931,6 +931,9 b" coreconfigitem('storage', 'revlog.optimi"
931 931 default=True,
932 932 alias=[('format', 'aggressivemergedeltas')],
933 933 )
934 coreconfigitem('experimental', 'resolve.mark-check',
935 default=None,
936 )
934 937 coreconfigitem('server', 'bookmarks-pushkey-compat',
935 938 default=True,
936 939 )
@@ -916,14 +916,17 b' def _onfilemergefailure(ui):'
916 916 _haltmerge()
917 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 923 def _check(repo, r, ui, tool, fcd, files):
920 924 fd = fcd.path()
921 925 unused, unused, unused, back = files
922 926
923 927 if not r and (_toolbool(ui, tool, "checkconflicts") or
924 928 'conflicts' in _toollist(ui, tool, "check")):
925 if re.search("^(<<<<<<< .*|=======|>>>>>>> .*)$", fcd.data(),
926 re.MULTILINE):
929 if hasconflictmarkers(fcd.data()):
927 930 r = 1
928 931
929 932 checked = False
@@ -373,4 +373,53 b' resolve -l should be empty'
373 373
374 374 $ hg resolve -l
375 375
376 resolve -m can be configured to look for remaining conflict markers
377 $ hg up -qC 2
378 $ hg merge -q --tool=internal:merge 1
379 warning: conflicts while merging file1! (edit, then use 'hg resolve --mark')
380 warning: conflicts while merging file2! (edit, then use 'hg resolve --mark')
381 [1]
382 $ hg resolve -l
383 U file1
384 U file2
385 $ echo 'remove markers' > file1
386 $ hg --config experimental.resolve.mark-check=abort resolve -m
387 warning: the following files still have conflict markers:
388 file2
389 abort: conflict markers detected
390 (use --all to mark anyway)
391 [255]
392 $ hg resolve -l
393 U file1
394 U file2
395 Try with --all from the hint
396 $ hg --config experimental.resolve.mark-check=abort resolve -m --all
397 warning: the following files still have conflict markers:
398 file2
399 (no more unresolved files)
400 $ hg resolve -l
401 R file1
402 R file2
403 $ hg resolve --unmark
404 $ hg resolve -l
405 U file1
406 U file2
407 $ hg --config experimental.resolve.mark-check=warn resolve -m
408 warning: the following files still have conflict markers:
409 file2
410 (no more unresolved files)
411 $ hg resolve -l
412 R file1
413 R file2
414 If the file is already marked as resolved, we don't warn about it
415 $ hg resolve --unmark file1
416 $ hg resolve -l
417 U file1
418 R file2
419 $ hg --config experimental.resolve.mark-check=warn resolve -m
420 (no more unresolved files)
421 $ hg resolve -l
422 R file1
423 R file2
424
376 425 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now