mercurial/revlog.py
changeset 1214 34706a835d4a
parent 1201 59bfbdbc38f6
child 1218 cde6818e082a
equal deleted inserted replaced
1213:db9639b8594c 1214:34706a835d4a
   109     def __init__(self, parser):
   109     def __init__(self, parser):
   110         self.p = parser
   110         self.p = parser
   111     def load(self, key):
   111     def load(self, key):
   112         if self.p.all: return
   112         if self.p.all: return
   113         n = self.p.data.find(key)
   113         n = self.p.data.find(key)
   114         if n < 0: raise KeyError("node " + hex(key))
   114         if n < 0:
       
   115             raise KeyError(key)
   115         pos = n / self.p.s
   116         pos = n / self.p.s
   116         self.p.load(pos)
   117         self.p.load(pos)
   117     def __contains__(self, key):
   118     def __contains__(self, key):
   118         self.p.load()
   119         self.p.load()
   119         return key in self.p.map
   120         return key in self.p.map
   208     def node(self, rev): return (rev < 0) and nullid or self.index[rev][6]
   209     def node(self, rev): return (rev < 0) and nullid or self.index[rev][6]
   209     def rev(self, node):
   210     def rev(self, node):
   210         try:
   211         try:
   211             return self.nodemap[node]
   212             return self.nodemap[node]
   212         except KeyError:
   213         except KeyError:
   213             raise KeyError('%s: no node %s' % (self.indexfile, hex(node)))
   214             raise RevlogError('%s: no node %s' % (self.indexfile, hex(node)))
   214     def linkrev(self, node): return self.index[self.rev(node)][3]
   215     def linkrev(self, node): return self.index[self.rev(node)][3]
   215     def parents(self, node):
   216     def parents(self, node):
   216         if node == nullid: return (nullid, nullid)
   217         if node == nullid: return (nullid, nullid)
   217         return self.index[self.rev(node)][4:6]
   218         return self.index[self.rev(node)][4:6]
   218 
   219 
   288         except (ValueError, OverflowError):
   289         except (ValueError, OverflowError):
   289             c = []
   290             c = []
   290             for n in self.nodemap:
   291             for n in self.nodemap:
   291                 if hex(n).startswith(id):
   292                 if hex(n).startswith(id):
   292                     c.append(n)
   293                     c.append(n)
   293             if len(c) > 1: raise KeyError("Ambiguous identifier")
   294             if len(c) > 1: raise RevlogError("Ambiguous identifier")
   294             if len(c) < 1: raise KeyError("No match found")
   295             if len(c) < 1: raise RevlogError("No match found")
   295             return c[0]
   296             return c[0]
   296 
   297 
   297         return None
   298         return None
   298 
   299 
   299     def diff(self, a, b):
   300     def diff(self, a, b):
   351             last = last + s
   352             last = last + s
   352 
   353 
   353         text = mdiff.patches(text, bins)
   354         text = mdiff.patches(text, bins)
   354 
   355 
   355         if node != hash(text, p1, p2):
   356         if node != hash(text, p1, p2):
   356             raise IOError("integrity check failed on %s:%d"
   357             raise RevlogError("integrity check failed on %s:%d"
   357                           % (self.datafile, rev))
   358                           % (self.datafile, rev))
   358 
   359 
   359         self.cache = (node, rev, text)
   360         self.cache = (node, rev, text)
   360         return text
   361         return text
   361 
   362