Mercurial > hg
comparison mercurial/verify.py @ 27647:2c2858f3c1bb
verify: move changelog verificaiton to its own function
This makes verify more modular so extensions can hook into it.
author | Durham Goode <durham@fb.com> |
---|---|
date | Tue, 05 Jan 2016 17:08:14 -0800 |
parents | 8f43793382c6 |
children | e72e669dd51f |
comparison
equal
deleted
inserted
replaced
27646:8f43793382c6 | 27647:2c2858f3c1bb |
---|---|
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 |