mercurial/revlog.py
changeset 2777 81d7db1aa0fb
parent 2643 f23973ea3107
child 2859 345bac2bc4ec
equal deleted inserted replaced
2776:557ea210fd9f 2777:81d7db1aa0fb
   742                     continue
   742                     continue
   743         return c
   743         return c
   744 
   744 
   745     def lookup(self, id):
   745     def lookup(self, id):
   746         """locate a node based on revision number or subset of hex nodeid"""
   746         """locate a node based on revision number or subset of hex nodeid"""
   747         if id in self.nodemap:
       
   748             return id
       
   749         if type(id) == type(0):
   747         if type(id) == type(0):
   750             return self.node(id)
   748             return self.node(id)
   751         try:
   749         try:
   752             rev = int(id)
   750             rev = int(id)
   753             if str(rev) != id: raise ValueError
   751             if str(rev) != id: raise ValueError
   758             c = []
   756             c = []
   759             for n in self.nodemap:
   757             for n in self.nodemap:
   760                 if hex(n).startswith(id):
   758                 if hex(n).startswith(id):
   761                     c.append(n)
   759                     c.append(n)
   762             if len(c) > 1: raise RevlogError(_("Ambiguous identifier"))
   760             if len(c) > 1: raise RevlogError(_("Ambiguous identifier"))
   763             if len(c) < 1: raise RevlogError(_("No match found"))
   761             if len(c) == 1: return c[0]
   764             return c[0]
   762 
   765 
   763         # might need fixing if we change hash lengths
   766         return None
   764         if len(id) == 20 and id in self.nodemap:
       
   765             return id
       
   766 
       
   767         raise RevlogError(_("No match found"))
   767 
   768 
   768     def diff(self, a, b):
   769     def diff(self, a, b):
   769         """return a delta between two revisions"""
   770         """return a delta between two revisions"""
   770         return mdiff.textdiff(a, b)
   771         return mdiff.textdiff(a, b)
   771 
   772