mercurial/revlog.py
changeset 11962 5f7ee3db3dd8
parent 11935 927ada259634
child 11963 7c3aa579d98a
--- a/mercurial/revlog.py	Thu Aug 19 13:25:46 2010 +0200
+++ b/mercurial/revlog.py	Wed Aug 18 19:45:52 2010 +0200
@@ -1142,7 +1142,7 @@
         tr.replace(self.indexfile, trindex * self._io.size)
         self._chunkclear()
 
-    def addrevision(self, text, transaction, link, p1, p2, d=None):
+    def addrevision(self, text, transaction, link, p1, p2, cachedelta=None):
         """add a revision to the log
 
         text - the revision data to add
@@ -1156,13 +1156,15 @@
             dfh = self.opener(self.datafile, "a")
         ifh = self.opener(self.indexfile, "a+")
         try:
-            return self._addrevision(text, transaction, link, p1, p2, d, ifh, dfh)
+            return self._addrevision(text, transaction, link, p1, p2,
+                                     cachedelta, ifh, dfh)
         finally:
             if dfh:
                 dfh.close()
             ifh.close()
 
-    def _addrevision(self, text, transaction, link, p1, p2, d, ifh, dfh):
+    def _addrevision(self, text, transaction, link, p1, p2,
+                     cachedelta, ifh, dfh):
         node = hash(text, p1, p2)
         if node in self.nodemap:
             return node
@@ -1172,8 +1174,14 @@
         base = self.base(prev)
         offset = self.end(prev)
         flags = 0
+        d = None
 
         if curr:
+            # can we use the cached delta?
+            if cachedelta:
+                cacherev, d = cachedelta
+                if cacherev != prev:
+                    d = None
             if not d:
                 if self._parentdelta:
                     ptext = self.revision(p1)