Mercurial > hg
changeset 44315:7762a295fd4d
nodemap: use an explicit "Block" object in the reference implementation
This will help us to introduce some test around the data currently written on
disk.
Differential Revision: https://phab.mercurial-scm.org/D7842
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Wed, 15 Jan 2020 15:48:28 +0100 |
parents | 7f4f7ef3133e |
children | 55b12f2593c1 |
files | mercurial/revlogutils/nodemap.py |
diffstat | 1 files changed, 8 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/revlogutils/nodemap.py Wed Jan 15 15:48:19 2020 +0100 +++ b/mercurial/revlogutils/nodemap.py Wed Jan 15 15:48:28 2020 +0100 @@ -216,6 +216,12 @@ return int(hex_digit, 16) +class Block(dict): + """represent a block of the Trie + + contains up to 16 entry indexed from 0 to 15""" + + def _build_trie(index): """build a nodemap trie @@ -224,7 +230,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 +259,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)