Mercurial > public > mercurial-scm > hg
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: |