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