comparison mercurial/revlogutils/rewrite.py @ 47817:855463b5fe49 stable

debugcommands: add a `--paranoid` option to `debug-repair-issue-6528` See justification inline. Differential Revision: https://phab.mercurial-scm.org/D11263
author Rapha?l Gom?s <rgomes@octobus.net>
date Fri, 06 Aug 2021 12:10:36 +0200
parents 32e21ac3adb1
children 5b046c2e3000
comparison
equal deleted inserted replaced
47816:32e21ac3adb1 47817:855463b5fe49
670 continue 670 continue
671 if not dry_run: 671 if not dry_run:
672 _reorder_filelog_parents(repo, fl, sorted(to_fix)) 672 _reorder_filelog_parents(repo, fl, sorted(to_fix))
673 673
674 674
675 def repair_issue6528(ui, repo, dry_run=False, to_report=None, from_report=None): 675 def repair_issue6528(
676 ui, repo, dry_run=False, to_report=None, from_report=None, paranoid=False
677 ):
676 from .. import store # avoid cycle 678 from .. import store # avoid cycle
677 679
678 @contextlib.contextmanager 680 @contextlib.contextmanager
679 def context(): 681 def context():
680 if dry_run or to_report: # No need for locking 682 if dry_run or to_report: # No need for locking
717 metadata_cache = {} 719 metadata_cache = {}
718 for filerev in fl.revs(): 720 for filerev in fl.revs():
719 affected = _is_revision_affected_fast( 721 affected = _is_revision_affected_fast(
720 repo, fl, filerev, metadata_cache 722 repo, fl, filerev, metadata_cache
721 ) 723 )
724 if paranoid:
725 slow = _is_revision_affected(fl, filerev)
726 if slow != affected:
727 msg = _(b"paranoid check failed for '%s' at node %s")
728 node = binascii.hexlify(fl.node(filerev))
729 raise error.Abort(msg % (filename, node))
722 if affected: 730 if affected:
723 msg = b"found affected revision %d for filelog '%s'\n" 731 msg = b"found affected revision %d for filelog '%s'\n"
724 ui.warn(msg % (filerev, path)) 732 ui.warn(msg % (filerev, path))
725 found_nothing = False 733 found_nothing = False
726 if not dry_run: 734 if not dry_run: