pure: create type for revlog v0 index
authorMartin von Zweigbergk <martinvonz@google.com>
Fri, 20 Jul 2018 14:25:59 -0700
changeset 38849 da5a666f0f78
parent 38848 c0d411ea6639
child 38850 6104b203bec8
pure: create type for revlog v0 index The new type takes care of hiding the nullid entry. This type helps us transition away from including that entry at index[len(index)-1]. Differential Revision: https://phab.mercurial-scm.org/D4020
mercurial/revlog.py
--- a/mercurial/revlog.py	Fri Jul 20 10:02:05 2018 -0700
+++ b/mercurial/revlog.py	Fri Jul 20 14:25:59 2018 -0700
@@ -790,6 +790,14 @@
 indexformatv0_pack = indexformatv0.pack
 indexformatv0_unpack = indexformatv0.unpack
 
+class revlogoldindex(list):
+    def __len__(self):
+        return list.__len__(self) + 1
+    def __getitem__(self, i):
+        if i == -1 or i == len(self) - 1:
+            return (0, 0, 0, -1, -1, -1, -1, nullid)
+        return list.__getitem__(self, i)
+
 class revlogoldio(object):
     def __init__(self):
         self.size = indexformatv0.size
@@ -811,10 +819,7 @@
             nodemap[e[6]] = n
             n += 1
 
-        # add the magic null revision at -1
-        index.append((0, 0, 0, -1, -1, -1, -1, nullid))
-
-        return index, nodemap, None
+        return revlogoldindex(index), nodemap, None
 
     def packentry(self, entry, node, version, rev):
         if gettype(entry[0]):