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