verify: print hint to run debugrebuildfncache
Corrupt fncache is now a recoverable operation. Inform the user how to
recover from this warning.
--- a/mercurial/verify.py Mon Jun 22 09:59:48 2015 -0700
+++ b/mercurial/verify.py Sat Jun 20 20:11:53 2015 -0700
@@ -219,6 +219,7 @@
elif size > 0 or not revlogv1:
storefiles.add(_normpath(f))
+ fncachewarned = False
files = sorted(set(filenodes) | set(filelinkrevs))
total = len(files)
for i, f in enumerate(files):
@@ -245,6 +246,7 @@
storefiles.remove(ff)
except KeyError:
warn(_(" warning: revlog '%s' not in fncache!") % ff)
+ fncachewarned = True
checklog(fl, f, lr)
seen = {}
@@ -313,6 +315,9 @@
(len(files), len(cl), revisions))
if warnings[0]:
ui.warn(_("%d warnings encountered!\n") % warnings[0])
+ if fncachewarned:
+ ui.warn(_('hint: run "hg debugrebuildfncache" to recover from '
+ 'corrupt fncache\n'))
if errors[0]:
ui.warn(_("%d integrity errors encountered!\n") % errors[0])
if badrevs:
--- a/tests/test-fncache.t Mon Jun 22 09:59:48 2015 -0700
+++ b/tests/test-fncache.t Sat Jun 20 20:11:53 2015 -0700
@@ -53,6 +53,23 @@
warning: revlog 'data/a.i/b.i' not in fncache!
3 files, 3 changesets, 3 total revisions
3 warnings encountered!
+ hint: run "hg debugrebuildfncache" to recover from corrupt fncache
+
+Follow the hint to make sure it works
+
+ $ hg debugrebuildfncache
+ adding data/a.i
+ adding data/a.i.hg/c.i
+ adding data/a.i/b.i
+ 3 items added, 0 removed from fncache
+
+ $ hg verify
+ checking changesets
+ checking manifests
+ crosschecking files in changesets and manifests
+ checking files
+ 3 files, 3 changesets, 3 total revisions
+
$ cd ..
Non store repo:
--- a/tests/test-verify.t Mon Jun 22 09:59:48 2015 -0700
+++ b/tests/test-verify.t Sat Jun 20 20:11:53 2015 -0700
@@ -55,6 +55,7 @@
bar.txt@0: 256559129457 in manifests not found
3 files, 1 changesets, 0 total revisions
3 warnings encountered!
+ hint: run "hg debugrebuildfncache" to recover from corrupt fncache
6 integrity errors encountered!
(first damaged changeset appears to be 0)
[1]