##// END OF EJS Templates
verify: add some local variables
Matt Mackall -
r6751:7424a75f default
parent child Browse files
Show More
@@ -24,6 +24,9 b' def _verify(repo):'
24 24 errors = [0]
25 25 warnings = [0]
26 26 neededmanifests = {}
27 ui = repo.ui
28 cl = repo.changelog
29 mf = repo.manifest
27 30
28 31 def err(linkrev, msg, filename=None):
29 32 if linkrev != None:
@@ -36,11 +39,11 b' def _verify(repo):'
36 39 msg = "%s: %s" % (linkrev, msg)
37 40 if filename:
38 41 msg = "%s@%s" % (filename, msg)
39 repo.ui.warn(" " + msg + "\n")
42 ui.warn(" " + msg + "\n")
40 43 errors[0] += 1
41 44
42 45 def warn(msg):
43 repo.ui.warn(msg + "\n")
46 ui.warn(msg + "\n")
44 47 warnings[0] += 1
45 48
46 49 def checksize(obj, name):
@@ -57,37 +60,37 b' def _verify(repo):'
57 60 elif revlogv1:
58 61 warn(_("warning: `%s' uses revlog format 0") % name)
59 62
60 revlogv1 = repo.changelog.version != revlog.REVLOGV0
61 if repo.ui.verbose or not revlogv1:
62 repo.ui.status(_("repository uses revlog format %d\n") %
63 revlogv1 = cl.version != revlog.REVLOGV0
64 if ui.verbose or not revlogv1:
65 ui.status(_("repository uses revlog format %d\n") %
63 66 (revlogv1 and 1 or 0))
64 67
65 68 havecl = havemf = 1
66 69 seen = {}
67 repo.ui.status(_("checking changesets\n"))
68 if not len(repo) and len(repo.manifest):
70 ui.status(_("checking changesets\n"))
71 if not len(cl) and len(mf):
69 72 havecl = 0
70 73 err(0, _("empty or missing 00changelog.i"))
71 74 else:
72 checksize(repo.changelog, "changelog")
75 checksize(cl, "changelog")
73 76
74 77 for i in repo:
75 78 changesets += 1
76 n = repo.changelog.node(i)
77 l = repo.changelog.linkrev(n)
79 n = cl.node(i)
80 l = cl.linkrev(n)
78 81 if l != i:
79 82 err(i, _("incorrect link (%d) for changeset") %(l))
80 83 if n in seen:
81 84 err(i, _("duplicates changeset at revision %d") % seen[n])
82 85 seen[n] = i
83 86
84 for p in repo.changelog.parents(n):
85 if p not in repo.changelog.nodemap:
87 for p in cl.parents(n):
88 if p not in cl.nodemap:
86 89 err(i, _("changeset has unknown parent %s") % short(p))
87 90 try:
88 changes = repo.changelog.read(n)
91 changes = cl.read(n)
89 92 except KeyboardInterrupt:
90 repo.ui.warn(_("interrupted"))
93 ui.warn(_("interrupted"))
91 94 raise
92 95 except Exception, inst:
93 96 err(i, _("unpacking changeset: %s") % inst)
@@ -100,19 +103,19 b' def _verify(repo):'
100 103 filelinkrevs.setdefault(f, []).append(i)
101 104
102 105 seen = {}
103 repo.ui.status(_("checking manifests\n"))
104 if len(repo) and not len(repo.manifest):
106 ui.status(_("checking manifests\n"))
107 if len(cl) and not len(mf):
105 108 havemf = 0
106 109 err(0, _("empty or missing 00manifest.i"))
107 110 else:
108 checkversion(repo.manifest, "manifest")
109 checksize(repo.manifest, "manifest")
111 checkversion(mf, "manifest")
112 checksize(mf, "manifest")
110 113
111 for i in repo.manifest:
112 n = repo.manifest.node(i)
113 l = repo.manifest.linkrev(n)
114 for i in mf:
115 n = mf.node(i)
116 l = mf.linkrev(n)
114 117
115 if l < 0 or (havecl and l >= len(repo)):
118 if l < 0 or (havecl and l >= len(cl)):
116 119 err(None, _("bad link (%d) at manifest revision %d") % (l, i))
117 120
118 121 if n in neededmanifests:
@@ -123,23 +126,23 b' def _verify(repo):'
123 126
124 127 seen[n] = l
125 128
126 for p in repo.manifest.parents(n):
127 if p not in repo.manifest.nodemap:
129 for p in mf.parents(n):
130 if p not in mf.nodemap:
128 131 err(l, _("manifest has unknown parent %s") % short(p))
129 132
130 133 try:
131 for f, fn in repo.manifest.readdelta(n).iteritems():
134 for f, fn in mf.readdelta(n).iteritems():
132 135 fns = filenodes.setdefault(f, {})
133 136 if fn not in fns:
134 137 fns[fn] = n
135 138 except KeyboardInterrupt:
136 repo.ui.warn(_("interrupted"))
139 ui.warn(_("interrupted"))
137 140 raise
138 141 except Exception, inst:
139 142 err(l, _("reading manifest delta: %s") % inst)
140 143 continue
141 144
142 repo.ui.status(_("crosschecking files in changesets and manifests\n"))
145 ui.status(_("crosschecking files in changesets and manifests\n"))
143 146
144 147 if havemf > 0:
145 148 nm = [(c, m) for m, c in neededmanifests.items()]
@@ -153,7 +156,7 b' def _verify(repo):'
153 156 fl.sort()
154 157 for f in fl:
155 158 if f not in filelinkrevs:
156 lrs = [repo.manifest.linkrev(n) for n in filenodes[f]]
159 lrs = [mf.linkrev(n) for n in filenodes[f]]
157 160 lrs.sort()
158 161 err(lrs[0], _("in manifest but not in changeset"), f)
159 162 del fl
@@ -167,7 +170,7 b' def _verify(repo):'
167 170 err(lr, _("in changeset but not in manifest"), f)
168 171 del fl
169 172
170 repo.ui.status(_("checking files\n"))
173 ui.status(_("checking files\n"))
171 174 ff = dict.fromkeys(filenodes.keys() + filelinkrevs.keys()).keys()
172 175 ff.sort()
173 176 for f in ff:
@@ -219,7 +222,7 b' def _verify(repo):'
219 222 try:
220 223 t = fl.read(n)
221 224 except KeyboardInterrupt:
222 repo.ui.warn(_("interrupted"))
225 ui.warn(_("interrupted"))
223 226 raise
224 227 except Exception, inst:
225 228 err(flr, _("unpacking %s: %s") % (short(n), inst), f)
@@ -234,7 +237,7 b' def _verify(repo):'
234 237 err(flr, _("unknown parent 2 %s of %s") %
235 238 (short(p2), short(p1)), f)
236 239 except KeyboardInterrupt:
237 repo.ui.warn(_("interrupted"))
240 ui.warn(_("interrupted"))
238 241 raise
239 242 except Exception, inst:
240 243 err(flr, _("checking parents of %s: %s") % (short(n), inst), f)
@@ -254,7 +257,7 b' def _verify(repo):'
254 257 else:
255 258 rev = fl2.rev(rp[1])
256 259 except KeyboardInterrupt:
257 repo.ui.warn(_("interrupted"))
260 ui.warn(_("interrupted"))
258 261 raise
259 262 except Exception, inst:
260 263 err(flr, _("checking rename of %s: %s") %
@@ -262,20 +265,20 b' def _verify(repo):'
262 265
263 266 # cross-check
264 267 if f in filenodes:
265 fns = [(repo.manifest.linkrev(filenodes[f][n]), n)
268 fns = [(mf.linkrev(filenodes[f][n]), n)
266 269 for n in filenodes[f]]
267 270 fns.sort()
268 271 for lr, node in fns:
269 272 err(lr, _("%s in manifests not found") % short(node), f)
270 273
271 repo.ui.status(_("%d files, %d changesets, %d total revisions\n") %
274 ui.status(_("%d files, %d changesets, %d total revisions\n") %
272 275 (files, changesets, revisions))
273 276
274 277 if warnings[0]:
275 repo.ui.warn(_("%d warnings encountered!\n") % warnings[0])
278 ui.warn(_("%d warnings encountered!\n") % warnings[0])
276 279 if errors[0]:
277 repo.ui.warn(_("%d integrity errors encountered!\n") % errors[0])
280 ui.warn(_("%d integrity errors encountered!\n") % errors[0])
278 281 if firstbad[0]:
279 repo.ui.warn(_("(first damaged changeset appears to be %d)\n")
282 ui.warn(_("(first damaged changeset appears to be %d)\n")
280 283 % firstbad[0])
281 284 return 1
General Comments 0
You need to be logged in to leave comments. Login now