equal
deleted
inserted
replaced
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: |