Mercurial > hg
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], |