--- a/mercurial/verify.py Wed Feb 03 15:35:15 2016 -0800
+++ b/mercurial/verify.py Thu Feb 11 15:38:56 2016 -0800
@@ -197,7 +197,8 @@
ui.progress(_('checking'), None)
return mflinkrevs, filelinkrevs
- def _verifymanifest(self, mflinkrevs, dir="", storefiles=None):
+ def _verifymanifest(self, mflinkrevs, dir="", storefiles=None,
+ progress=None):
repo = self.repo
ui = self.ui
mf = self.repo.manifest.dirlog(dir)
@@ -213,6 +214,8 @@
label = dir
revlogfiles = mf.files()
storefiles.difference_update(revlogfiles)
+ if progress: # should be true since we're in a subdirectory
+ progress()
if self.refersmf:
# Do not check manifest if there are only changelog entries with
# null manifests.
@@ -263,19 +266,29 @@
if not dir and subdirnodes:
self.ui.status(_("checking directory manifests\n"))
storefiles = set()
+ subdirs = set()
revlogv1 = self.revlogv1
for f, f2, size in repo.store.datafiles():
if not f:
self.err(None, _("cannot decode filename '%s'") % f2)
elif (size > 0 or not revlogv1) and f.startswith('meta/'):
storefiles.add(_normpath(f))
+ subdirs.add(os.path.dirname(f))
+ subdircount = len(subdirs)
+ currentsubdir = [0]
+ def progress():
+ currentsubdir[0] += 1
+ ui.progress(_('checking'), currentsubdir[0], total=subdircount,
+ unit=_('manifests'))
for subdir, linkrevs in subdirnodes.iteritems():
- subdirfilenodes = self._verifymanifest(linkrevs, subdir, storefiles)
+ subdirfilenodes = self._verifymanifest(linkrevs, subdir, storefiles,
+ progress)
for f, onefilenodes in subdirfilenodes.iteritems():
filenodes.setdefault(f, {}).update(onefilenodes)
if not dir and subdirnodes:
+ ui.progress(_('checking'), None)
for f in sorted(storefiles):
self.warn(_("warning: orphan revlog '%s'") % f)