diff --git a/mercurial/revlog.py b/mercurial/revlog.py --- a/mercurial/revlog.py +++ b/mercurial/revlog.py @@ -1033,7 +1033,12 @@ class revlog(object): # should we try to build a delta? if prev != nullrev: if self._generaldelta: - d = builddelta(p1r) + if p1r >= basecache[1]: + d = builddelta(p1r) + elif p2r >= basecache[1]: + d = builddelta(p2r) + else: + d = builddelta(prev) else: d = builddelta(prev) dist, l, data, base, chainbase = d