Mercurial > public > mercurial-scm > hg
diff mercurial/pure/parsers.py @ 47249:130c9f7ed914
revlog: add a "data compression mode" entry in the index tuple
That will make it possible to keep track of compression information in the
revlog index, opening the way to more efficient revision restoration (in native
code, but the python usage is already defeating performance work).
We start with adding a new entry to the index tuple, using a value matching the
current behavior. We will introduce storage and other value in later changesets.
Differential Revision: https://phab.mercurial-scm.org/D10646
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Mon, 03 May 2021 18:19:16 +0200 |
parents | 78230d036e5d |
children | 6bfa6c2c5f15 |
line wrap: on
line diff
--- a/mercurial/pure/parsers.py Tue May 04 01:15:03 2021 +0200 +++ b/mercurial/pure/parsers.py Mon May 03 18:19:16 2021 +0200 @@ -54,7 +54,19 @@ # Size of a C long int, platform independent int_size = struct.calcsize(b'>i') # An empty index entry, used as a default value to be overridden, or nullrev - null_item = (0, 0, 0, -1, -1, -1, -1, sha1nodeconstants.nullid, 0, 0) + null_item = ( + 0, + 0, + 0, + -1, + -1, + -1, + -1, + sha1nodeconstants.nullid, + 0, + 0, + revlog_constants.COMP_MODE_INLINE, + ) @util.propertycache def entry_size(self): @@ -135,7 +147,7 @@ def _unpack_entry(self, data): r = self.index_format.unpack(data) - r = r + (0, 0) + r = r + (0, 0, revlog_constants.COMP_MODE_INLINE) return r def pack_header(self, header): @@ -303,16 +315,17 @@ self._extra[rev - self._lgt] = new def _unpack_entry(self, data): - return self.index_format.unpack(data) + return self.index_format.unpack(data) + ( + revlog_constants.COMP_MODE_INLINE, + ) def _pack_entry(self, entry): - return self.index_format.pack(*entry) + return self.index_format.pack(*entry[:10]) def entry_binary(self, rev): """return the raw binary string representing a revision""" entry = self[rev] - p = revlog_constants.INDEX_ENTRY_V2.pack(*entry) - return p + return self._pack_entry(entry) def pack_header(self, header): """pack header information as binary"""