diff -r bb7e3b3e6e11 -r 62e25c63fb3a mercurial/revlog.py --- a/mercurial/revlog.py Mon May 09 15:16:56 2011 -0400 +++ b/mercurial/revlog.py Thu May 12 13:47:17 2011 +0200 @@ -218,7 +218,7 @@ self.datafile = indexfile[:-2] + ".d" self.opener = opener self._cache = None - self._basecache = None + self._basecache = (0, 0) self._chunkcache = (0, '') self.index = [] self._pcache = {} @@ -1010,8 +1010,7 @@ delta = mdiff.textdiff(ptext, t) data = compress(delta) l = len(data[1]) + len(data[0]) - basecache = self._basecache - if basecache and basecache[0] == rev: + if basecache[0] == rev: chainbase = basecache[1] else: chainbase = self.chainbase(rev) @@ -1020,14 +1019,15 @@ base = rev else: base = chainbase - return dist, l, data, base + return dist, l, data, base, chainbase curr = len(self) prev = curr - 1 - base = curr + base = chainbase = curr offset = self.end(prev) flags = 0 d = None + basecache = self._basecache p1r, p2r = self.rev(p1), self.rev(p2) # should we try to build a delta? @@ -1036,7 +1036,7 @@ d = builddelta(p1r) else: d = builddelta(prev) - dist, l, data, base = d + dist, l, data, base, chainbase = d # full versions are inserted when the needed deltas # become comparable to the uncompressed text @@ -1049,7 +1049,7 @@ text = buildtext() data = compress(text) l = len(data[1]) + len(data[0]) - base = curr + base = chainbase = curr e = (offset_type(offset, flags), l, textlen, base, link, p1r, p2r, node) @@ -1075,7 +1075,7 @@ if type(text) == str: # only accept immutable objects self._cache = (node, curr, text) - self._basecache = (curr, base) + self._basecache = (curr, chainbase) return node def group(self, nodelist, bundler):