# HG changeset patch # User Thomas Arendsen Hein # Date 1141774043 -3600 # Node ID 5ac811b720de4f4a34d058f42511c44d282eb3b9 # Parent fdf9cbf56ec7ae609a506d3c5ae123db164e243e Fix some problems when working on broken repositories: Fix tracebacks in hg verify for certain repo errors. Print compression type byte encoded safely. diff -r fdf9cbf56ec7 -r 5ac811b720de mercurial/localrepo.py --- a/mercurial/localrepo.py Tue Mar 07 22:41:24 2006 +0100 +++ b/mercurial/localrepo.py Wed Mar 08 00:27:23 2006 +0100 @@ -1771,6 +1771,7 @@ raise except Exception, inst: err(_("unpacking changeset %s: %s") % (short(n), inst)) + continue neededmanifests[changes[0]] = n @@ -1808,10 +1809,14 @@ raise except Exception, inst: err(_("unpacking manifest %s: %s") % (short(n), inst)) + continue - ff = [ l.split('\0') for l in delta.splitlines() ] - for f, fn in ff: - filenodes.setdefault(f, {})[bin(fn[:40])] = 1 + try: + ff = [ l.split('\0') for l in delta.splitlines() ] + for f, fn in ff: + filenodes.setdefault(f, {})[bin(fn[:40])] = 1 + except (ValueError, TypeError), inst: + err(_("broken delta in manifest %s: %s") % (short(n), inst)) self.ui.status(_("crosschecking files in changesets and manifests\n")) @@ -1835,6 +1840,9 @@ if f == "/dev/null": continue files += 1 + if not f: + err(_("file without name in manifest %s") % short(n)) + continue fl = self.file(f) checksize(fl, f) @@ -1852,7 +1860,7 @@ del filenodes[f][n] flr = fl.linkrev(n) - if flr not in filelinkrevs[f]: + if flr not in filelinkrevs.get(f, []): err(_("%s:%s points to unexpected changeset %d") % (f, short(n), flr)) else: diff -r fdf9cbf56ec7 -r 5ac811b720de mercurial/revlog.py --- a/mercurial/revlog.py Tue Mar 07 22:41:24 2006 +0100 +++ b/mercurial/revlog.py Wed Mar 08 00:27:23 2006 +0100 @@ -48,7 +48,7 @@ if t == '\0': return bin if t == 'x': return zlib.decompress(bin) if t == 'u': return bin[1:] - raise RevlogError(_("unknown compression type %s") % t) + raise RevlogError(_("unknown compression type %r") % t) indexformat = ">4l20s20s20s"