[PATCH 04 of 10] added recursion to revlog._revision()

Sune Foldager cryo at cyanite.org
Wed Sep 8 14:48:17 CDT 2010


# HG changeset patch
# User Sune Foldager <sune.foldager at edlund.dk>
# Date 1283764387 -7200
# Node ID cc60a9d3e9f1f017682f8dfdd512e3af2019bac9
# Parent  ec0c92bf0202b823a24c9ae5f3f7bd1f16f224cd
added recursion to revlog._revision()

diff --git a/mercurial/revlog.py b/mercurial/revlog.py
--- a/mercurial/revlog.py
+++ b/mercurial/revlog.py
@@ -1058,8 +1058,11 @@
         return text
 
     def _revision(self, rev):
+        base = self.base(rev)
+        if rev == base:
+            return self._chunk(base)
+
         # build delta chain
-        base = self.base(rev)
         self._loadindex(base, rev + 1)
         cachedrev = self._cache and self._cache[1] or None
         chain = []
@@ -1075,7 +1078,7 @@
             e = index[iterrev]
         chain.reverse()
         base = iterrev
-        
+
         if iterrev == cachedrev:
             # cache hit
             text = self._cache[2]
@@ -1087,7 +1090,7 @@
 
         self._chunkraw(base, rev)
         if text is None:
-            text = self._chunk(base)
+            text = self._revision(base)
 
         bins = [self._chunk(r) for r in chain]
         text = mdiff.patches(text, bins)


More information about the Mercurial-devel mailing list