mercurial/revlog.py
changeset 23286 40e0067899d4
parent 23285 6cc1f388ac80
child 23287 426d7f901789
equal deleted inserted replaced
23285:6cc1f388ac80 23286:40e0067899d4
   352         while base != rev:
   352         while base != rev:
   353             rev = base
   353             rev = base
   354             base = index[rev][3]
   354             base = index[rev][3]
   355         return base
   355         return base
   356     def chainlen(self, rev):
   356     def chainlen(self, rev):
       
   357         return self._chaininfo(rev)[0]
       
   358     def _chaininfo(self, rev):
   357         index = self.index
   359         index = self.index
   358         generaldelta = self._generaldelta
   360         generaldelta = self._generaldelta
   359         iterrev = rev
   361         iterrev = rev
   360         e = index[iterrev]
   362         e = index[iterrev]
   361         clen = 0
   363         clen = 0
       
   364         compresseddeltalen = 0
   362         while iterrev != e[3]:
   365         while iterrev != e[3]:
   363             clen += 1
   366             clen += 1
       
   367             compresseddeltalen += e[1]
   364             if generaldelta:
   368             if generaldelta:
   365                 iterrev = e[3]
   369                 iterrev = e[3]
   366             else:
   370             else:
   367                 iterrev -= 1
   371                 iterrev -= 1
   368             e = index[iterrev]
   372             e = index[iterrev]
   369         return clen
   373         # add text length of base since decompressing that also takes work
       
   374         compresseddeltalen += e[1]
       
   375         return clen, compresseddeltalen
   370     def flags(self, rev):
   376     def flags(self, rev):
   371         return self.index[rev][0] & 0xFFFF
   377         return self.index[rev][0] & 0xFFFF
   372     def rawsize(self, rev):
   378     def rawsize(self, rev):
   373         """return the length of the uncompressed text for a given revision"""
   379         """return the length of the uncompressed text for a given revision"""
   374         l = self.index[rev][2]
   380         l = self.index[rev][2]