D7842: nodemap: use an explicit "Block" object in the reference implementation
marmoute (Pierre-Yves David)
phabricator at mercurial-scm.org
Sun Feb 2 08:18:57 UTC 2020
marmoute added a comment.
marmoute updated this revision to Diff 19831.
small doc update on .#s[1]
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D7842?vs=19787&id=19831
CHANGES SINCE LAST ACTION
https://phab.mercurial-scm.org/D7842/new/
REVISION DETAIL
https://phab.mercurial-scm.org/D7842
AFFECTED FILES
mercurial/revlogutils/nodemap.py
CHANGE DETAILS
diff --git a/mercurial/revlogutils/nodemap.py b/mercurial/revlogutils/nodemap.py
--- a/mercurial/revlogutils/nodemap.py
+++ b/mercurial/revlogutils/nodemap.py
@@ -216,6 +216,14 @@
return int(hex_digit, 16)
+class Block(dict):
+ """represent a block of the Trie
+
+ contains up to 16 entry indexed from 0 to 15"""
+
+ pass
+
+
def _build_trie(index):
"""build a nodemap trie
@@ -224,7 +232,7 @@
Each block is a dictionary with keys in `[0, 15]`. Values are either
another block or a revision number.
"""
- root = {}
+ root = Block()
for rev in range(len(index)):
hex = nodemod.hex(index[rev][7])
_insert_into_block(index, 0, root, rev, hex)
@@ -253,7 +261,7 @@
# vertices to fit both entry.
other_hex = nodemod.hex(index[entry][7])
other_rev = entry
- new = {}
+ new = Block()
block[hex_digit] = new
_insert_into_block(index, level + 1, new, other_rev, other_hex)
_insert_into_block(index, level + 1, new, current_rev, current_hex)
To: marmoute, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list