comparison mercurial/verify.py @ 10433:767fbacb3ddc

verify: call ui.progress()
author Augie Fackler <durin42@gmail.com>
date Wed, 10 Feb 2010 18:46:19 -0600
parents 08a0f04b56bd
children 45734b51c99b
comparison
equal deleted inserted replaced
10432:8a8030fc57d6 10433:767fbacb3ddc
118 havemf = len(mf) > 0 118 havemf = len(mf) > 0
119 119
120 ui.status(_("checking changesets\n")) 120 ui.status(_("checking changesets\n"))
121 seen = {} 121 seen = {}
122 checklog(cl, "changelog", 0) 122 checklog(cl, "changelog", 0)
123 total = len(repo)
123 for i in repo: 124 for i in repo:
125 ui.progress('changelog', i, total=total)
124 n = cl.node(i) 126 n = cl.node(i)
125 checkentry(cl, i, n, seen, [i], "changelog") 127 checkentry(cl, i, n, seen, [i], "changelog")
126 128
127 try: 129 try:
128 changes = cl.read(n) 130 changes = cl.read(n)
129 mflinkrevs.setdefault(changes[0], []).append(i) 131 mflinkrevs.setdefault(changes[0], []).append(i)
130 for f in changes[3]: 132 for f in changes[3]:
131 filelinkrevs.setdefault(f, []).append(i) 133 filelinkrevs.setdefault(f, []).append(i)
132 except Exception, inst: 134 except Exception, inst:
133 exc(i, _("unpacking changeset %s") % short(n), inst) 135 exc(i, _("unpacking changeset %s") % short(n), inst)
136 ui.progress('changelog', None)
134 137
135 ui.status(_("checking manifests\n")) 138 ui.status(_("checking manifests\n"))
136 seen = {} 139 seen = {}
137 checklog(mf, "manifest", 0) 140 checklog(mf, "manifest", 0)
141 total = len(mf)
138 for i in mf: 142 for i in mf:
143 ui.progress('manifests', i, total=total)
139 n = mf.node(i) 144 n = mf.node(i)
140 lr = checkentry(mf, i, n, seen, mflinkrevs.get(n, []), "manifest") 145 lr = checkentry(mf, i, n, seen, mflinkrevs.get(n, []), "manifest")
141 if n in mflinkrevs: 146 if n in mflinkrevs:
142 del mflinkrevs[n] 147 del mflinkrevs[n]
143 else: 148 else:
149 err(lr, _("file without name in manifest")) 154 err(lr, _("file without name in manifest"))
150 elif f != "/dev/null": 155 elif f != "/dev/null":
151 filenodes.setdefault(f, {}).setdefault(fn, lr) 156 filenodes.setdefault(f, {}).setdefault(fn, lr)
152 except Exception, inst: 157 except Exception, inst:
153 exc(lr, _("reading manifest delta %s") % short(n), inst) 158 exc(lr, _("reading manifest delta %s") % short(n), inst)
159 ui.progress('manifests', None)
154 160
155 ui.status(_("crosschecking files in changesets and manifests\n")) 161 ui.status(_("crosschecking files in changesets and manifests\n"))
156 162
163 total = len(mflinkrevs) + len(filelinkrevs) + len(filenodes)
164 count = 0
157 if havemf: 165 if havemf:
158 for c, m in sorted([(c, m) for m in mflinkrevs 166 for c, m in sorted([(c, m) for m in mflinkrevs
159 for c in mflinkrevs[m]]): 167 for c in mflinkrevs[m]]):
168 count += 1
169 ui.progress('crosscheck', count, total=total)
160 err(c, _("changeset refers to unknown manifest %s") % short(m)) 170 err(c, _("changeset refers to unknown manifest %s") % short(m))
161 mflinkrevs = None # del is bad here due to scope issues 171 mflinkrevs = None # del is bad here due to scope issues
162 172
163 for f in sorted(filelinkrevs): 173 for f in sorted(filelinkrevs):
174 count += 1
175 ui.progress('crosscheck', count, total=total)
164 if f not in filenodes: 176 if f not in filenodes:
165 lr = filelinkrevs[f][0] 177 lr = filelinkrevs[f][0]
166 err(lr, _("in changeset but not in manifest"), f) 178 err(lr, _("in changeset but not in manifest"), f)
167 179
168 if havecl: 180 if havecl:
169 for f in sorted(filenodes): 181 for f in sorted(filenodes):
182 count += 1
183 ui.progress('crosscheck', count, total=total)
170 if f not in filelinkrevs: 184 if f not in filelinkrevs:
171 try: 185 try:
172 fl = repo.file(f) 186 fl = repo.file(f)
173 lr = min([fl.linkrev(fl.rev(n)) for n in filenodes[f]]) 187 lr = min([fl.linkrev(fl.rev(n)) for n in filenodes[f]])
174 except: 188 except:
175 lr = None 189 lr = None
176 err(lr, _("in manifest but not in changeset"), f) 190 err(lr, _("in manifest but not in changeset"), f)
177 191
192 ui.progress('crosscheck', None)
193
178 ui.status(_("checking files\n")) 194 ui.status(_("checking files\n"))
179 195
180 storefiles = set() 196 storefiles = set()
181 for f, f2, size in repo.store.datafiles(): 197 for f, f2, size in repo.store.datafiles():
182 if not f: 198 if not f:
183 err(None, _("cannot decode filename '%s'") % f2) 199 err(None, _("cannot decode filename '%s'") % f2)
184 elif size > 0: 200 elif size > 0:
185 storefiles.add(f) 201 storefiles.add(f)
186 202
187 files = sorted(set(filenodes) | set(filelinkrevs)) 203 files = sorted(set(filenodes) | set(filelinkrevs))
188 for f in files: 204 total = len(files)
205 for i, f in enumerate(files):
206 ui.progress('files', i, item=f, total=total)
189 try: 207 try:
190 linkrevs = filelinkrevs[f] 208 linkrevs = filelinkrevs[f]
191 except KeyError: 209 except KeyError:
192 # in manifest but not in changelog 210 # in manifest but not in changelog
193 linkrevs = [] 211 linkrevs = []
261 # cross-check 279 # cross-check
262 if f in filenodes: 280 if f in filenodes:
263 fns = [(lr, n) for n, lr in filenodes[f].iteritems()] 281 fns = [(lr, n) for n, lr in filenodes[f].iteritems()]
264 for lr, node in sorted(fns): 282 for lr, node in sorted(fns):
265 err(lr, _("%s in manifests not found") % short(node), f) 283 err(lr, _("%s in manifests not found") % short(node), f)
284 ui.progress('files', None)
266 285
267 for f in storefiles: 286 for f in storefiles:
268 warn(_("warning: orphan revlog '%s'") % f) 287 warn(_("warning: orphan revlog '%s'") % f)
269 288
270 ui.status(_("%d files, %d changesets, %d total revisions\n") % 289 ui.status(_("%d files, %d changesets, %d total revisions\n") %