changeset 4971:3e6dae278c99

revlog: regroup parsing code
author Matt Mackall <mpm@selenic.com>
date Mon, 23 Jul 2007 20:44:07 -0500
parents 30d4d8985dd8
children 8d0cf46e0dc6
files mercurial/revlog.py
diffstat 1 files changed, 23 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/revlog.py	Sun Jul 22 14:53:57 2007 -0500
+++ b/mercurial/revlog.py	Mon Jul 23 20:44:07 2007 -0500
@@ -378,32 +378,32 @@
             raise RevlogError(_("index %s unknown format %d")
                               % (self.indexfile, fmt))
         self.version = v
-        if v == REVLOGV0:
+        self.nodemap = {nullid: nullrev}
+        self.index = []
+        self.indexformat = indexformatng
+        if self.version == REVLOGV0:
             self.indexformat = indexformatv0
-            shaoffset = v0shaoffset
-        else:
-            self.indexformat = indexformatng
-            shaoffset = ngshaoffset
-
         if i:
-            if (lazyparser.safe_to_use and not self._inline() and
-                st and st.st_size > 10000):
-                # big index, let's parse it on demand
-                parser = lazyparser(f, st.st_size, self.indexformat, shaoffset)
-                self.index = lazyindex(parser)
-                self.nodemap = lazymap(parser)
-            else:
-                self._parseindex(f, st)
+            self._parseindex(f, st)
+
+    def _parseindex(self, fp, st):
+        shaoffset = ngshaoffset
+        if self.version == REVLOGV0:
+            shaoffset = v0shaoffset
+
+        if (lazyparser.safe_to_use and not self._inline() and
+            st and st.st_size > 10000):
+            # big index, let's parse it on demand
+            parser = lazyparser(fp, st.st_size, self.indexformat, shaoffset)
+            self.index = lazyindex(parser)
+            self.nodemap = lazymap(parser)
             if self.version != REVLOGV0:
                 e = list(self.index[0])
                 type = gettype(e[0])
                 e[0] = offset_type(0, type)
                 self.index[0] = e
-        else:
-            self.nodemap = {nullid: nullrev}
-            self.index = []
+            return
 
-    def _parseindex(self, fp, st):
         s = struct.calcsize(self.indexformat)
         self.index = []
         self.nodemap =  {nullid: nullrev}
@@ -447,6 +447,11 @@
             if not st:
                 break
 
+        if self.version != REVLOGV0:
+            e = list(self.index[0])
+            type = gettype(e[0])
+            e[0] = offset_type(0, type)
+            self.index[0] = e
 
     def _loadindex(self, start, end):
         """load a block of indexes all at once from the lazy parser"""