# HG changeset patch # User Matt Harbison # Date 2020-01-18 06:54:17 # Node ID e77b57e09bfa7f548eca8262fbcbd788d49e586c # Parent 97cc270c3ecc7087ab608066bc9ad2b9e60df165 verify: avoid spurious integrity warnings in verbose mode (issue6172) The issue seems to revolve around renames in filtered commits, and only occurred in verbose mode. The problem occurs in the `# check renames` stage, around line 577. Without using the unfiltered repo, this test would have printed: $ hg verify -v repository uses revlog format 1 checking changesets checking manifests crosschecking files in changesets and manifests checking files foo@25: checking rename of 71ec0570c325: filtered revision '25' foobar@26: checking rename of 1b549296015b: filtered revision '26' checked 28 changesets with 16 changes to 11 files 2 integrity errors encountered! (first damaged changeset appears to be 25) [1] Differential Revision: https://phab.mercurial-scm.org/D7950 diff --git a/mercurial/verify.py b/mercurial/verify.py --- a/mercurial/verify.py +++ b/mercurial/verify.py @@ -54,7 +54,7 @@ class verifier(object): self.havecl = len(repo.changelog) > 0 self.havemf = len(repo.manifestlog.getstorage(b'')) > 0 self.revlogv1 = repo.changelog.version != revlog.REVLOGV0 - self.lrugetctx = util.lrucachefunc(repo.__getitem__) + self.lrugetctx = util.lrucachefunc(repo.unfiltered().__getitem__) self.refersmf = False self.fncachewarned = False # developer config: verify.skipflags diff --git a/tests/test-unamend.t b/tests/test-unamend.t --- a/tests/test-unamend.t +++ b/tests/test-unamend.t @@ -346,6 +346,14 @@ Testing whether unamend retains copies o $ hg mv c wat $ hg unamend + $ hg verify -v + repository uses revlog format 1 + checking changesets + checking manifests + crosschecking files in changesets and manifests + checking files + checked 28 changesets with 16 changes to 11 files + Retained copies in new prdecessor commit $ hg exp --git