mercurial/revlog.py
changeset 2801 81d7db1aa0fb
parent 2652 f23973ea3107
child 2858 345bac2bc4ec
--- 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"""