Mercurial > hg
changeset 1214:34706a835d4a
Smarter handling of revlog key errors
Use RevlogError for reporting exceptions
Catch and report RevlogError exceptions at the command parser
author | mpm@selenic.com |
---|---|
date | Wed, 07 Sep 2005 23:38:28 -0700 |
parents | db9639b8594c |
children | 8b4435aae40a |
files | mercurial/commands.py mercurial/revlog.py |
diffstat | 2 files changed, 8 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/commands.py Wed Sep 07 23:13:12 2005 -0700 +++ b/mercurial/commands.py Wed Sep 07 23:38:28 2005 -0700 @@ -1961,6 +1961,8 @@ raise except hg.RepoError, inst: u.warn("abort: ", inst, "!\n") + except revlog.RevlogError, inst: + u.warn("abort: ", inst, "!\n") except SignalInterrupt: u.warn("killed!\n") except KeyboardInterrupt:
--- a/mercurial/revlog.py Wed Sep 07 23:13:12 2005 -0700 +++ b/mercurial/revlog.py Wed Sep 07 23:38:28 2005 -0700 @@ -111,7 +111,8 @@ def load(self, key): if self.p.all: return n = self.p.data.find(key) - if n < 0: raise KeyError("node " + hex(key)) + if n < 0: + raise KeyError(key) pos = n / self.p.s self.p.load(pos) def __contains__(self, key): @@ -210,7 +211,7 @@ try: return self.nodemap[node] except KeyError: - raise KeyError('%s: no node %s' % (self.indexfile, hex(node))) + raise RevlogError('%s: no node %s' % (self.indexfile, hex(node))) def linkrev(self, node): return self.index[self.rev(node)][3] def parents(self, node): if node == nullid: return (nullid, nullid) @@ -290,8 +291,8 @@ for n in self.nodemap: if hex(n).startswith(id): c.append(n) - if len(c) > 1: raise KeyError("Ambiguous identifier") - if len(c) < 1: raise KeyError("No match found") + if len(c) > 1: raise RevlogError("Ambiguous identifier") + if len(c) < 1: raise RevlogError("No match found") return c[0] return None @@ -353,7 +354,7 @@ text = mdiff.patches(text, bins) if node != hash(text, p1, p2): - raise IOError("integrity check failed on %s:%d" + raise RevlogError("integrity check failed on %s:%d" % (self.datafile, rev)) self.cache = (node, rev, text)