diff -r 8d84b7a2dd91 -r d23834b871ac mercurial/revlog.py --- a/mercurial/revlog.py Wed Nov 05 10:13:01 2014 +0000 +++ b/mercurial/revlog.py Thu Nov 06 14:08:25 2014 -0800 @@ -350,6 +350,20 @@ rev = base base = index[rev][3] return base + def chainlen(self, rev): + index = self.index + generaldelta = self._generaldelta + iterrev = rev + e = index[iterrev] + clen = 0 + while iterrev != e[3]: + clen += 1 + if generaldelta: + iterrev = e[3] + else: + iterrev -= 1 + e = index[iterrev] + return clen def flags(self, rev): return self.index[rev][0] & 0xFFFF def rawsize(self, rev):