comparison mercurial/revlog.py @ 38849:da5a666f0f78

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
author Martin von Zweigbergk <martinvonz@google.com>
date Fri, 20 Jul 2018 14:25:59 -0700
parents 119d14f41cb2
children 6104b203bec8
comparison
equal deleted inserted replaced
38848:c0d411ea6639 38849:da5a666f0f78
788 # 20 bytes: nodeid 788 # 20 bytes: nodeid
789 indexformatv0 = struct.Struct(">4l20s20s20s") 789 indexformatv0 = struct.Struct(">4l20s20s20s")
790 indexformatv0_pack = indexformatv0.pack 790 indexformatv0_pack = indexformatv0.pack
791 indexformatv0_unpack = indexformatv0.unpack 791 indexformatv0_unpack = indexformatv0.unpack
792 792
793 class revlogoldindex(list):
794 def __len__(self):
795 return list.__len__(self) + 1
796 def __getitem__(self, i):
797 if i == -1 or i == len(self) - 1:
798 return (0, 0, 0, -1, -1, -1, -1, nullid)
799 return list.__getitem__(self, i)
800
793 class revlogoldio(object): 801 class revlogoldio(object):
794 def __init__(self): 802 def __init__(self):
795 self.size = indexformatv0.size 803 self.size = indexformatv0.size
796 804
797 def parseindex(self, data, inline): 805 def parseindex(self, data, inline):
809 nodemap.get(e[4], nullrev), nodemap.get(e[5], nullrev), e[6]) 817 nodemap.get(e[4], nullrev), nodemap.get(e[5], nullrev), e[6])
810 index.append(e2) 818 index.append(e2)
811 nodemap[e[6]] = n 819 nodemap[e[6]] = n
812 n += 1 820 n += 1
813 821
814 # add the magic null revision at -1 822 return revlogoldindex(index), nodemap, None
815 index.append((0, 0, 0, -1, -1, -1, -1, nullid))
816
817 return index, nodemap, None
818 823
819 def packentry(self, entry, node, version, rev): 824 def packentry(self, entry, node, version, rev):
820 if gettype(entry[0]): 825 if gettype(entry[0]):
821 raise RevlogError(_('index entry flags need revlog version 1')) 826 raise RevlogError(_('index entry flags need revlog version 1'))
822 e2 = (getoffset(entry[0]), entry[1], entry[3], entry[4], 827 e2 = (getoffset(entry[0]), entry[1], entry[3], entry[4],