195 self.refersmf = True |
195 self.refersmf = True |
196 self.exc(i, _("unpacking changeset %s") % short(n), inst) |
196 self.exc(i, _("unpacking changeset %s") % short(n), inst) |
197 ui.progress(_('checking'), None) |
197 ui.progress(_('checking'), None) |
198 return mflinkrevs, filelinkrevs |
198 return mflinkrevs, filelinkrevs |
199 |
199 |
200 def _verifymanifest(self, mflinkrevs, dir=""): |
200 def _verifymanifest(self, mflinkrevs, dir="", storefiles=None): |
201 repo = self.repo |
201 repo = self.repo |
202 ui = self.ui |
202 ui = self.ui |
203 mf = self.repo.manifest.dirlog(dir) |
203 mf = self.repo.manifest.dirlog(dir) |
204 |
204 |
205 if not dir: |
205 if not dir: |
258 self.err(c, _("changeset refers to unknown revision %s") % |
260 self.err(c, _("changeset refers to unknown revision %s") % |
259 short(m), label) |
261 short(m), label) |
260 |
262 |
261 if not dir and subdirnodes: |
263 if not dir and subdirnodes: |
262 self.ui.status(_("checking directory manifests\n")) |
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 for subdir, linkrevs in subdirnodes.iteritems(): |
273 for subdir, linkrevs in subdirnodes.iteritems(): |
264 subdirfilenodes = self._verifymanifest(linkrevs, subdir) |
274 subdirfilenodes = self._verifymanifest(linkrevs, subdir, storefiles) |
265 for f, onefilenodes in subdirfilenodes.iteritems(): |
275 for f, onefilenodes in subdirfilenodes.iteritems(): |
266 filenodes.setdefault(f, {}).update(onefilenodes) |
276 filenodes.setdefault(f, {}).update(onefilenodes) |
|
277 |
|
278 if not dir and subdirnodes: |
|
279 for f in sorted(storefiles): |
|
280 self.warn(_("warning: orphan revlog '%s'") % f) |
267 |
281 |
268 return filenodes |
282 return filenodes |
269 |
283 |
270 def _crosscheckfiles(self, filelinkrevs, filenodes): |
284 def _crosscheckfiles(self, filelinkrevs, filenodes): |
271 repo = self.repo |
285 repo = self.repo |
400 for lr, node in sorted(fns): |
414 for lr, node in sorted(fns): |
401 self.err(lr, _("manifest refers to unknown revision %s") % |
415 self.err(lr, _("manifest refers to unknown revision %s") % |
402 short(node), f) |
416 short(node), f) |
403 ui.progress(_('checking'), None) |
417 ui.progress(_('checking'), None) |
404 |
418 |
405 for f in storefiles: |
419 for f in sorted(storefiles): |
406 self.warn(_("warning: orphan revlog '%s'") % f) |
420 self.warn(_("warning: orphan revlog '%s'") % f) |
407 |
421 |
408 return len(files), revisions |
422 return len(files), revisions |