# HG changeset patch # User Siddharth Agarwal # Date 2014-11-12 03:54:36 # Node ID 40e0067899d471a06e931b33fda7dd27e8a8bacc # Parent 6cc1f388ac805145600dc41fb045002d23cf53ca revlog: compute length of compressed deltas along with chain length In upcoming patches to the revlog, we're going to split up the notions of bounding I/O and bounding CPU. diff --git a/mercurial/revlog.py b/mercurial/revlog.py --- a/mercurial/revlog.py +++ b/mercurial/revlog.py @@ -354,19 +354,25 @@ class revlog(object): base = index[rev][3] return base def chainlen(self, rev): + return self._chaininfo(rev)[0] + def _chaininfo(self, rev): index = self.index generaldelta = self._generaldelta iterrev = rev e = index[iterrev] clen = 0 + compresseddeltalen = 0 while iterrev != e[3]: clen += 1 + compresseddeltalen += e[1] if generaldelta: iterrev = e[3] else: iterrev -= 1 e = index[iterrev] - return clen + # add text length of base since decompressing that also takes work + compresseddeltalen += e[1] + return clen, compresseddeltalen def flags(self, rev): return self.index[rev][0] & 0xFFFF def rawsize(self, rev):