mercurial/revlog.py
changeset 30287 0986f225c149
parent 30210 5e4f16874a9f
child 30288 ceddc3d94d74
equal deleted inserted replaced
30286:d44c407a5999 30287:0986f225c149
   378                 if v == node:
   378                 if v == node:
   379                     self._nodepos = r - 1
   379                     self._nodepos = r - 1
   380                     return r
   380                     return r
   381             raise LookupError(node, self.indexfile, _('no node'))
   381             raise LookupError(node, self.indexfile, _('no node'))
   382 
   382 
   383     def node(self, rev):
   383     # Accessors for index entries.
   384         return self.index[rev][7]
   384 
   385     def linkrev(self, rev):
   385     # First tuple entry is 8 bytes. First 6 bytes are offset. Last 2 bytes
   386         return self.index[rev][4]
   386     # are flags.
   387     def parents(self, node):
       
   388         i = self.index
       
   389         d = i[self.rev(node)]
       
   390         return i[d[5]][7], i[d[6]][7] # map revisions to nodes inline
       
   391     def parentrevs(self, rev):
       
   392         return self.index[rev][5:7]
       
   393     def start(self, rev):
   387     def start(self, rev):
   394         return int(self.index[rev][0] >> 16)
   388         return int(self.index[rev][0] >> 16)
   395     def end(self, rev):
   389 
   396         return self.start(rev) + self.length(rev)
   390     def flags(self, rev):
       
   391         return self.index[rev][0] & 0xFFFF
       
   392 
   397     def length(self, rev):
   393     def length(self, rev):
   398         return self.index[rev][1]
   394         return self.index[rev][1]
       
   395 
       
   396     def rawsize(self, rev):
       
   397         """return the length of the uncompressed text for a given revision"""
       
   398         l = self.index[rev][2]
       
   399         if l >= 0:
       
   400             return l
       
   401 
       
   402         t = self.revision(self.node(rev))
       
   403         return len(t)
       
   404     size = rawsize
       
   405 
   399     def chainbase(self, rev):
   406     def chainbase(self, rev):
   400         base = self._chainbasecache.get(rev)
   407         base = self._chainbasecache.get(rev)
   401         if base is not None:
   408         if base is not None:
   402             return base
   409             return base
   403 
   410 
   407             rev = base
   414             rev = base
   408             base = index[rev][3]
   415             base = index[rev][3]
   409 
   416 
   410         self._chainbasecache[rev] = base
   417         self._chainbasecache[rev] = base
   411         return base
   418         return base
       
   419 
       
   420     def linkrev(self, rev):
       
   421         return self.index[rev][4]
       
   422 
       
   423     def parentrevs(self, rev):
       
   424         return self.index[rev][5:7]
       
   425 
       
   426     def node(self, rev):
       
   427         return self.index[rev][7]
       
   428 
       
   429     # Derived from index values.
       
   430 
       
   431     def end(self, rev):
       
   432         return self.start(rev) + self.length(rev)
       
   433 
       
   434     def parents(self, node):
       
   435         i = self.index
       
   436         d = i[self.rev(node)]
       
   437         return i[d[5]][7], i[d[6]][7] # map revisions to nodes inline
       
   438 
   412     def chainlen(self, rev):
   439     def chainlen(self, rev):
   413         return self._chaininfo(rev)[0]
   440         return self._chaininfo(rev)[0]
   414 
   441 
   415     def _chaininfo(self, rev):
   442     def _chaininfo(self, rev):
   416         chaininfocache = self._chaininfocache
   443         chaininfocache = self._chaininfocache
   475             chain.append(iterrev)
   502             chain.append(iterrev)
   476             stopped = False
   503             stopped = False
   477 
   504 
   478         chain.reverse()
   505         chain.reverse()
   479         return chain, stopped
   506         return chain, stopped
   480 
       
   481     def flags(self, rev):
       
   482         return self.index[rev][0] & 0xFFFF
       
   483     def rawsize(self, rev):
       
   484         """return the length of the uncompressed text for a given revision"""
       
   485         l = self.index[rev][2]
       
   486         if l >= 0:
       
   487             return l
       
   488 
       
   489         t = self.revision(self.node(rev))
       
   490         return len(t)
       
   491     size = rawsize
       
   492 
   507 
   493     def ancestors(self, revs, stoprev=0, inclusive=False):
   508     def ancestors(self, revs, stoprev=0, inclusive=False):
   494         """Generate the ancestors of 'revs' in reverse topological order.
   509         """Generate the ancestors of 'revs' in reverse topological order.
   495         Does not generate revs lower than stoprev.
   510         Does not generate revs lower than stoprev.
   496 
   511