mercurial/revlogutils/deltas.py
changeset 39595 a911932d5003
parent 39594 bdb41eaa8b59
child 39773 2cd93a8d4bde
--- a/mercurial/revlogutils/deltas.py	Mon Sep 10 10:11:21 2018 +0200
+++ b/mercurial/revlogutils/deltas.py	Mon Sep 10 08:31:41 2018 +0200
@@ -832,9 +832,18 @@
 
     def _builddeltainfo(self, revinfo, base, fh):
         # can we use the cached delta?
-        if revinfo.cachedelta and revinfo.cachedelta[0] == base:
-            delta = revinfo.cachedelta[1]
-        else:
+        delta = None
+        if revinfo.cachedelta:
+            cachebase, cachediff = revinfo.cachedelta
+            #check if the diff still apply
+            currentbase = cachebase
+            while (currentbase != nullrev
+                    and currentbase != base
+                    and self.revlog.length(currentbase) == 0):
+                currentbase = self.revlog.deltaparent(currentbase)
+            if currentbase == base:
+                delta = revinfo.cachedelta[1]
+        if delta is None:
             delta = self._builddeltadiff(base, revinfo, fh)
         revlog = self.revlog
         header, data = revlog.compress(delta)