[Updated] D11934: changelog-v2: use helper constant in the code to pack/unpack entries
marmoute (Pierre-Yves David)
phabricator at mercurial-scm.org
Fri Dec 17 14:01:03 UTC 2021
Closed by commit rHG2c6084f67a86: changelog-v2: use helper constant in the code to pack/unpack entries (authored by marmoute).
This revision was automatically updated to reflect the committed changes.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D11934?vs=31500&id=31531
CHANGES SINCE LAST ACTION
https://phab.mercurial-scm.org/D11934/new/
REVISION DETAIL
https://phab.mercurial-scm.org/D11934
AFFECTED FILES
mercurial/pure/parsers.py
mercurial/revlogutils/constants.py
CHANGE DETAILS
diff --git a/mercurial/revlogutils/constants.py b/mercurial/revlogutils/constants.py
--- a/mercurial/revlogutils/constants.py
+++ b/mercurial/revlogutils/constants.py
@@ -184,6 +184,15 @@
# 27 bytes: Padding to align to 96 bytes (see RevlogV2Plan wiki page)
INDEX_ENTRY_CL_V2 = struct.Struct(b">Qiiii20s12xQiB27x")
assert INDEX_ENTRY_CL_V2.size == 32 * 3, INDEX_ENTRY_V2.size
+INDEX_ENTRY_V2_IDX_OFFSET = 0
+INDEX_ENTRY_V2_IDX_COMPRESSED_LENGTH = 1
+INDEX_ENTRY_V2_IDX_UNCOMPRESSED_LENGTH = 2
+INDEX_ENTRY_V2_IDX_PARENT_1 = 3
+INDEX_ENTRY_V2_IDX_PARENT_2 = 4
+INDEX_ENTRY_V2_IDX_NODEID = 5
+INDEX_ENTRY_V2_IDX_SIDEDATA_OFFSET = 6
+INDEX_ENTRY_V2_IDX_SIDEDATA_COMPRESSED_LENGTH = 7
+INDEX_ENTRY_V2_IDX_COMPRESSION_MODE = 8
# revlog index flags
diff --git a/mercurial/pure/parsers.py b/mercurial/pure/parsers.py
--- a/mercurial/pure/parsers.py
+++ b/mercurial/pure/parsers.py
@@ -880,18 +880,43 @@
def _unpack_entry(self, rev, data, r=True):
items = self.index_format.unpack(data)
- entry = items[:3] + (rev, rev) + items[3:8]
- data_comp = items[8] & 3
- sidedata_comp = (items[8] >> 2) & 3
- return entry + (data_comp, sidedata_comp)
+ return (
+ items[revlog_constants.INDEX_ENTRY_V2_IDX_OFFSET],
+ items[revlog_constants.INDEX_ENTRY_V2_IDX_COMPRESSED_LENGTH],
+ items[revlog_constants.INDEX_ENTRY_V2_IDX_UNCOMPRESSED_LENGTH],
+ rev,
+ rev,
+ items[revlog_constants.INDEX_ENTRY_V2_IDX_PARENT_1],
+ items[revlog_constants.INDEX_ENTRY_V2_IDX_PARENT_2],
+ items[revlog_constants.INDEX_ENTRY_V2_IDX_NODEID],
+ items[revlog_constants.INDEX_ENTRY_V2_IDX_SIDEDATA_OFFSET],
+ items[
+ revlog_constants.INDEX_ENTRY_V2_IDX_SIDEDATA_COMPRESSED_LENGTH
+ ],
+ items[revlog_constants.INDEX_ENTRY_V2_IDX_COMPRESSION_MODE] & 3,
+ (items[revlog_constants.INDEX_ENTRY_V2_IDX_COMPRESSION_MODE] >> 2)
+ & 3,
+ )
def _pack_entry(self, rev, entry):
- assert entry[3] == rev, entry[3]
- assert entry[4] == rev, entry[4]
- data = entry[:3] + entry[5:10]
- data_comp = entry[10] & 3
- sidedata_comp = (entry[11] & 3) << 2
- data += (data_comp | sidedata_comp,)
+
+ base = entry[revlog_constants.ENTRY_DELTA_BASE]
+ link_rev = entry[revlog_constants.ENTRY_LINK_REV]
+ assert base == rev, (base, rev)
+ assert link_rev == rev, (link_rev, rev)
+ data = (
+ entry[revlog_constants.ENTRY_DATA_OFFSET],
+ entry[revlog_constants.ENTRY_DATA_COMPRESSED_LENGTH],
+ entry[revlog_constants.ENTRY_DATA_UNCOMPRESSED_LENGTH],
+ entry[revlog_constants.ENTRY_PARENT_1],
+ entry[revlog_constants.ENTRY_PARENT_2],
+ entry[revlog_constants.ENTRY_NODE_ID],
+ entry[revlog_constants.ENTRY_SIDEDATA_OFFSET],
+ entry[revlog_constants.ENTRY_SIDEDATA_COMPRESSED_LENGTH],
+ entry[revlog_constants.ENTRY_DATA_COMPRESSION_MODE] & 3
+ | (entry[revlog_constants.ENTRY_SIDEDATA_COMPRESSION_MODE] & 3)
+ << 2,
+ )
return self.index_format.pack(*data)
To: marmoute, #hg-reviewers, Alphare
Cc: mercurial-patches
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurial-scm.org/pipermail/mercurial-patches/attachments/20211217/32496ccb/attachment-0002.html>
More information about the Mercurial-patches
mailing list