# HG changeset patch # User Matt Mackall # Date 1154658259 18000 # Node ID 81d7db1aa0fb68662a51de8dce3f4a31a38e3a69 # Parent 557ea210fd9f750ab2323e0774dbb3148e3273ae revlog.lookup optimization diff --git a/mercurial/revlog.py b/mercurial/revlog.py --- a/mercurial/revlog.py +++ b/mercurial/revlog.py @@ -744,8 +744,6 @@ class revlog(object): def lookup(self, id): """locate a node based on revision number or subset of hex nodeid""" - if id in self.nodemap: - return id if type(id) == type(0): return self.node(id) try: @@ -760,10 +758,13 @@ class revlog(object): if hex(n).startswith(id): c.append(n) if len(c) > 1: raise RevlogError(_("Ambiguous identifier")) - if len(c) < 1: raise RevlogError(_("No match found")) - return c[0] + if len(c) == 1: return c[0] - return None + # might need fixing if we change hash lengths + if len(id) == 20 and id in self.nodemap: + return id + + raise RevlogError(_("No match found")) def diff(self, a, b): """return a delta between two revisions"""