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
--- 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