##// END OF EJS Templates
verify: check for orphaned dirlogs...
Martin von Zweigbergk -
r28204:962921c3 default
parent child Browse files
Show More
@@ -197,7 +197,7 class verifier(object):
197 197 ui.progress(_('checking'), None)
198 198 return mflinkrevs, filelinkrevs
199 199
200 def _verifymanifest(self, mflinkrevs, dir=""):
200 def _verifymanifest(self, mflinkrevs, dir="", storefiles=None):
201 201 repo = self.repo
202 202 ui = self.ui
203 203 mf = self.repo.manifest.dirlog(dir)
@@ -211,6 +211,8 class verifier(object):
211 211 label = "manifest"
212 212 if dir:
213 213 label = dir
214 revlogfiles = mf.files()
215 storefiles.difference_update(revlogfiles)
214 216 if self.refersmf:
215 217 # Do not check manifest if there are only changelog entries with
216 218 # null manifests.
@@ -260,11 +262,23 class verifier(object):
260 262
261 263 if not dir and subdirnodes:
262 264 self.ui.status(_("checking directory manifests\n"))
265 storefiles = set()
266 revlogv1 = self.revlogv1
267 for f, f2, size in repo.store.datafiles():
268 if not f:
269 self.err(None, _("cannot decode filename '%s'") % f2)
270 elif (size > 0 or not revlogv1) and f.startswith('meta/'):
271 storefiles.add(_normpath(f))
272
263 273 for subdir, linkrevs in subdirnodes.iteritems():
264 subdirfilenodes = self._verifymanifest(linkrevs, subdir)
274 subdirfilenodes = self._verifymanifest(linkrevs, subdir, storefiles)
265 275 for f, onefilenodes in subdirfilenodes.iteritems():
266 276 filenodes.setdefault(f, {}).update(onefilenodes)
267 277
278 if not dir and subdirnodes:
279 for f in sorted(storefiles):
280 self.warn(_("warning: orphan revlog '%s'") % f)
281
268 282 return filenodes
269 283
270 284 def _crosscheckfiles(self, filelinkrevs, filenodes):
@@ -402,7 +416,7 class verifier(object):
402 416 short(node), f)
403 417 ui.progress(_('checking'), None)
404 418
405 for f in storefiles:
419 for f in sorted(storefiles):
406 420 self.warn(_("warning: orphan revlog '%s'") % f)
407 421
408 422 return len(files), revisions
@@ -517,6 +517,12 Verify reports missing dirlog
517 517 b/@0: parent-directory manifest refers to unknown revision 67688a370455
518 518 b/@1: parent-directory manifest refers to unknown revision f38e85d334c5
519 519 b/@2: parent-directory manifest refers to unknown revision 99c9792fd4b0
520 warning: orphan revlog 'meta/b/bar/00manifest.i'
521 warning: orphan revlog 'meta/b/bar/orange/00manifest.i'
522 warning: orphan revlog 'meta/b/bar/orange/fly/00manifest.i'
523 warning: orphan revlog 'meta/b/foo/00manifest.i'
524 warning: orphan revlog 'meta/b/foo/apple/00manifest.i'
525 warning: orphan revlog 'meta/b/foo/apple/bees/00manifest.i'
520 526 crosschecking files in changesets and manifests
521 527 b/bar/fruits.txt@0: in changeset but not in manifest
522 528 b/bar/orange/fly/gnat.py@0: in changeset but not in manifest
@@ -524,6 +530,7 Verify reports missing dirlog
524 530 b/foo/apple/bees/flower.py@0: in changeset but not in manifest
525 531 checking files
526 532 8 files, 3 changesets, 10 total revisions
533 6 warnings encountered!
527 534 8 integrity errors encountered!
528 535 (first damaged changeset appears to be 0)
529 536 [1]
General Comments 0
You need to be logged in to leave comments. Login now