##// END OF EJS Templates
verify: move checkentry() to be a class function...
Durham Goode -
r27643:62ce86fc default
parent child Browse files
Show More
@@ -97,6 +97,41 b' class verifier(object):'
97 elif self.revlogv1:
97 elif self.revlogv1:
98 self.warn(_("warning: `%s' uses revlog format 0") % name)
98 self.warn(_("warning: `%s' uses revlog format 0") % name)
99
99
100 def checkentry(self, obj, i, node, seen, linkrevs, f):
101 lr = obj.linkrev(obj.rev(node))
102 if lr < 0 or (self.havecl and lr not in linkrevs):
103 if lr < 0 or lr >= len(self.repo.changelog):
104 msg = _("rev %d points to nonexistent changeset %d")
105 else:
106 msg = _("rev %d points to unexpected changeset %d")
107 self.err(None, msg % (i, lr), f)
108 if linkrevs:
109 if f and len(linkrevs) > 1:
110 try:
111 # attempt to filter down to real linkrevs
112 linkrevs = [l for l in linkrevs
113 if self.lrugetctx(l)[f].filenode() == node]
114 except Exception:
115 pass
116 self.warn(_(" (expected %s)") % " ".join(map(str, linkrevs)))
117 lr = None # can't be trusted
118
119 try:
120 p1, p2 = obj.parents(node)
121 if p1 not in seen and p1 != nullid:
122 self.err(lr, _("unknown parent 1 %s of %s") %
123 (short(p1), short(node)), f)
124 if p2 not in seen and p2 != nullid:
125 self.err(lr, _("unknown parent 2 %s of %s") %
126 (short(p2), short(node)), f)
127 except Exception as inst:
128 self.exc(lr, _("checking parents of %s") % short(node), inst, f)
129
130 if node in seen:
131 self.err(lr, _("duplicate revision %d (%d)") % (i, seen[node]), f)
132 seen[node] = i
133 return lr
134
100 def verify(self):
135 def verify(self):
101 repo = self.repo
136 repo = self.repo
102 mflinkrevs = {}
137 mflinkrevs = {}
@@ -112,43 +147,6 b' class verifier(object):'
112 if not repo.url().startswith('file:'):
147 if not repo.url().startswith('file:'):
113 raise error.Abort(_("cannot verify bundle or remote repos"))
148 raise error.Abort(_("cannot verify bundle or remote repos"))
114
149
115 def checkentry(obj, i, node, seen, linkrevs, f):
116 lr = obj.linkrev(obj.rev(node))
117 if lr < 0 or (havecl and lr not in linkrevs):
118 if lr < 0 or lr >= len(cl):
119 msg = _("rev %d points to nonexistent changeset %d")
120 else:
121 msg = _("rev %d points to unexpected changeset %d")
122 self.err(None, msg % (i, lr), f)
123 if linkrevs:
124 if f and len(linkrevs) > 1:
125 try:
126 # attempt to filter down to real linkrevs
127 linkrevs = [l for l in linkrevs
128 if lrugetctx(l)[f].filenode() == node]
129 except Exception:
130 pass
131 self.warn(_(" (expected %s)") %
132 " ".join(map(str, linkrevs)))
133 lr = None # can't be trusted
134
135 try:
136 p1, p2 = obj.parents(node)
137 if p1 not in seen and p1 != nullid:
138 self.err(lr, _("unknown parent 1 %s of %s") %
139 (short(p1), short(node)), f)
140 if p2 not in seen and p2 != nullid:
141 self.err(lr, _("unknown parent 2 %s of %s") %
142 (short(p2), short(node)), f)
143 except Exception as inst:
144 self.exc(lr, _("checking parents of %s") % short(node), inst, f)
145
146 if node in seen:
147 self.err(lr, _("duplicate revision %d (%d)") %
148 (i, seen[node]), f)
149 seen[node] = i
150 return lr
151
152 if os.path.exists(repo.sjoin("journal")):
150 if os.path.exists(repo.sjoin("journal")):
153 ui.warn(_("abandoned transaction found - run hg recover\n"))
151 ui.warn(_("abandoned transaction found - run hg recover\n"))
154
152
@@ -167,7 +165,7 b' class verifier(object):'
167 for i in repo:
165 for i in repo:
168 ui.progress(_('checking'), i, total=total, unit=_('changesets'))
166 ui.progress(_('checking'), i, total=total, unit=_('changesets'))
169 n = cl.node(i)
167 n = cl.node(i)
170 checkentry(cl, i, n, seen, [i], "changelog")
168 self.checkentry(cl, i, n, seen, [i], "changelog")
171
169
172 try:
170 try:
173 changes = cl.read(n)
171 changes = cl.read(n)
@@ -192,7 +190,8 b' class verifier(object):'
192 for i in mf:
190 for i in mf:
193 ui.progress(_('checking'), i, total=total, unit=_('manifests'))
191 ui.progress(_('checking'), i, total=total, unit=_('manifests'))
194 n = mf.node(i)
192 n = mf.node(i)
195 lr = checkentry(mf, i, n, seen, mflinkrevs.get(n, []), "manifest")
193 lr = self.checkentry(mf, i, n, seen, mflinkrevs.get(n, []),
194 "manifest")
196 if n in mflinkrevs:
195 if n in mflinkrevs:
197 del mflinkrevs[n]
196 del mflinkrevs[n]
198 else:
197 else:
@@ -289,7 +288,7 b' class verifier(object):'
289 for i in fl:
288 for i in fl:
290 revisions += 1
289 revisions += 1
291 n = fl.node(i)
290 n = fl.node(i)
292 lr = checkentry(fl, i, n, seen, linkrevs, f)
291 lr = self.checkentry(fl, i, n, seen, linkrevs, f)
293 if f in filenodes:
292 if f in filenodes:
294 if havemf and n not in filenodes[f]:
293 if havemf and n not in filenodes[f]:
295 self.err(lr, _("%s not in manifests") % (short(n)), f)
294 self.err(lr, _("%s not in manifests") % (short(n)), f)
General Comments 0
You need to be logged in to leave comments. Login now