verify: avoid spurious integrity warnings in verbose mode (issue6172)
authorMatt Harbison <matt_harbison@yahoo.com>
Sat, 18 Jan 2020 01:54:17 -0500
changeset 44113 e77b57e09bfa
parent 44112 97cc270c3ecc
child 44114 8a3b045d9086
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
mercurial/verify.py
tests/test-unamend.t
--- a/mercurial/verify.py	Fri Jan 17 22:31:47 2020 -0800
+++ b/mercurial/verify.py	Sat Jan 18 01:54:17 2020 -0500
@@ -54,7 +54,7 @@
         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
--- a/tests/test-unamend.t	Fri Jan 17 22:31:47 2020 -0800
+++ b/tests/test-unamend.t	Sat Jan 18 01:54:17 2020 -0500
@@ -346,6 +346,14 @@
   $ 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