Mercurial > public > mercurial-scm > hg
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") % |