[PATCH 03 of 15] revlog: changes for cache

Pradeepkumar Gayam in3xes at gmail.com
Mon Jul 12 05:49:45 CDT 2010


# HG changeset patch
# User Pradeepkumar Gayam <in3xes at gmail.com>
# Date 1278874963 -19800
# Branch stable
# Node ID f25ee334ef0e6af1cbf73fad2a20568c15cf68db
# Parent  15579a3a578521f9bf3e3ad9db0e462c1ffba9f2
revlog: changes for cache

diff -r 15579a3a5785 -r f25ee334ef0e mercurial/revlog.py
--- a/mercurial/revlog.py	Mon Jul 12 00:26:44 2010 +0530
+++ b/mercurial/revlog.py	Mon Jul 12 00:32:43 2010 +0530
@@ -1044,16 +1044,21 @@
                               (self.flags(rev)))
 
         # do we have useful data cached?
-        if self._cache and self._cache[1] >= base and self._cache[1] < rev:
-            base = self._cache[1]
-            text = self._cache[2]
+        if self._cache:
+            try:
+                intersect = chain.index(self._cache[1])
+            except ValueError:
+                pass
+            else:
+                base, chain = chain[intersect], chain[intersect + 1:]
+                text = self._cache[2]
 
         self._loadindex(base, rev + 1)
         self._chunkraw(base, rev)
         if text is None:
             text = self._chunk(base)
 
-        bins = [self._chunk(r) for r in xrange(base + 1, rev + 1)]
+        bins = [self._chunk(r) for r in chain]
         text = mdiff.patches(text, bins)
         p1, p2 = self.parents(node)
         if node != hash(text, p1, p2):


More information about the Mercurial-devel mailing list