151 revlogv1 = self.revlogv1 |
151 revlogv1 = self.revlogv1 |
152 if ui.verbose or not revlogv1: |
152 if ui.verbose or not revlogv1: |
153 ui.status(_("repository uses revlog format %d\n") % |
153 ui.status(_("repository uses revlog format %d\n") % |
154 (revlogv1 and 1 or 0)) |
154 (revlogv1 and 1 or 0)) |
155 |
155 |
156 ui.status(_("checking changesets\n")) |
156 self._verifychangelog(mflinkrevs, filelinkrevs) |
157 seen = {} |
|
158 self.checklog(cl, "changelog", 0) |
|
159 total = len(repo) |
|
160 for i in repo: |
|
161 ui.progress(_('checking'), i, total=total, unit=_('changesets')) |
|
162 n = cl.node(i) |
|
163 self.checkentry(cl, i, n, seen, [i], "changelog") |
|
164 |
|
165 try: |
|
166 changes = cl.read(n) |
|
167 if changes[0] != nullid: |
|
168 mflinkrevs.setdefault(changes[0], []).append(i) |
|
169 self.refersmf = True |
|
170 for f in changes[3]: |
|
171 if _validpath(repo, f): |
|
172 filelinkrevs.setdefault(_normpath(f), []).append(i) |
|
173 except Exception as inst: |
|
174 self.refersmf = True |
|
175 self.exc(i, _("unpacking changeset %s") % short(n), inst) |
|
176 ui.progress(_('checking'), None) |
|
177 |
157 |
178 self._verifymanifest(mflinkrevs, filenodes) |
158 self._verifymanifest(mflinkrevs, filenodes) |
179 |
159 |
180 self._crosscheckfiles(mflinkrevs, filelinkrevs, filenodes) |
160 self._crosscheckfiles(mflinkrevs, filelinkrevs, filenodes) |
181 |
161 |
193 ui.warn(_("%d integrity errors encountered!\n") % self.errors) |
173 ui.warn(_("%d integrity errors encountered!\n") % self.errors) |
194 if badrevs: |
174 if badrevs: |
195 ui.warn(_("(first damaged changeset appears to be %d)\n") |
175 ui.warn(_("(first damaged changeset appears to be %d)\n") |
196 % min(badrevs)) |
176 % min(badrevs)) |
197 return 1 |
177 return 1 |
|
178 |
|
179 def _verifychangelog(self, mflinkrevs, filelinkrevs): |
|
180 ui = self.ui |
|
181 repo = self.repo |
|
182 cl = repo.changelog |
|
183 |
|
184 ui.status(_("checking changesets\n")) |
|
185 seen = {} |
|
186 self.checklog(cl, "changelog", 0) |
|
187 total = len(repo) |
|
188 for i in repo: |
|
189 ui.progress(_('checking'), i, total=total, unit=_('changesets')) |
|
190 n = cl.node(i) |
|
191 self.checkentry(cl, i, n, seen, [i], "changelog") |
|
192 |
|
193 try: |
|
194 changes = cl.read(n) |
|
195 if changes[0] != nullid: |
|
196 mflinkrevs.setdefault(changes[0], []).append(i) |
|
197 self.refersmf = True |
|
198 for f in changes[3]: |
|
199 if _validpath(repo, f): |
|
200 filelinkrevs.setdefault(_normpath(f), []).append(i) |
|
201 except Exception as inst: |
|
202 self.refersmf = True |
|
203 self.exc(i, _("unpacking changeset %s") % short(n), inst) |
|
204 ui.progress(_('checking'), None) |
198 |
205 |
199 def _verifymanifest(self, mflinkrevs, filenodes): |
206 def _verifymanifest(self, mflinkrevs, filenodes): |
200 repo = self.repo |
207 repo = self.repo |
201 ui = self.ui |
208 ui = self.ui |
202 mf = self.repo.manifest |
209 mf = self.repo.manifest |