##// END OF EJS Templates
revlog: move the details of revlog "v2" index inside revlog.utils.constants...
marmoute -
r47617:85e3a630 default
parent child Browse files
Show More
@@ -243,21 +243,8 b' def parse_index2(data, inline, revlogv2='
243 243
244 244
245 245 class Index2Mixin(object):
246 # 6 bytes: offset
247 # 2 bytes: flags
248 # 4 bytes: compressed length
249 # 4 bytes: uncompressed length
250 # 4 bytes: base rev
251 # 4 bytes: link rev
252 # 4 bytes: parent 1 rev
253 # 4 bytes: parent 2 rev
254 # 32 bytes: nodeid
255 # 8 bytes: sidedata offset
256 # 4 bytes: sidedata compressed length
257 # 20 bytes: Padding to align to 96 bytes (see RevlogV2Plan wiki page)
258 index_format = b">Qiiiiii20s12xQi20x"
259 index_size = struct.calcsize(index_format)
260 assert index_size == 96, index_size
246 index_format = revlog_constants.INDEX_ENTRY_V2.format
247 index_size = revlog_constants.INDEX_ENTRY_V2.size
261 248 null_item = (0, 0, 0, -1, -1, -1, -1, nullid, 0, 0)
262 249
263 250 def replace_sidedata_info(self, i, sidedata_offset, sidedata_length):
@@ -43,6 +43,7 b' from .revlogutils.constants import ('
43 43 FLAG_INLINE_DATA,
44 44 INDEX_ENTRY_V0,
45 45 INDEX_ENTRY_V1,
46 INDEX_ENTRY_V2,
46 47 REVLOGV0,
47 48 REVLOGV1,
48 49 REVLOGV1_FLAGS,
@@ -87,7 +88,6 b' from .utils import ('
87 88 storageutil,
88 89 stringutil,
89 90 )
90 from .pure import parsers as pureparsers
91 91
92 92 # blanked usage of all the name to prevent pyflakes constraints
93 93 # We need these name available in the module for extensions.
@@ -352,20 +352,16 b' class revlogio(object):'
352 352 return p
353 353
354 354
355 indexformatv2 = struct.Struct(pureparsers.Index2Mixin.index_format)
356 indexformatv2_pack = indexformatv2.pack
357
358
359 355 class revlogv2io(object):
360 356 def __init__(self):
361 self.size = indexformatv2.size
357 self.size = INDEX_ENTRY_V2.size
362 358
363 359 def parseindex(self, data, inline):
364 360 index, cache = parsers.parse_index2(data, inline, revlogv2=True)
365 361 return index, cache
366 362
367 363 def packentry(self, entry, node, version, rev):
368 p = indexformatv2_pack(*entry)
364 p = INDEX_ENTRY_V2.pack(*entry)
369 365 if rev == 0:
370 366 p = versionformat_pack(version) + p[4:]
371 367 return p
@@ -57,6 +57,21 b' INDEX_ENTRY_V0 = struct.Struct(b">4l20s2'
57 57 INDEX_ENTRY_V1 = struct.Struct(b">Qiiiiii20s12x")
58 58 assert INDEX_ENTRY_V1.size == 32 * 2
59 59
60 # 6 bytes: offset
61 # 2 bytes: flags
62 # 4 bytes: compressed length
63 # 4 bytes: uncompressed length
64 # 4 bytes: base rev
65 # 4 bytes: link rev
66 # 4 bytes: parent 1 rev
67 # 4 bytes: parent 2 rev
68 # 32 bytes: nodeid
69 # 8 bytes: sidedata offset
70 # 4 bytes: sidedata compressed length
71 # 20 bytes: Padding to align to 96 bytes (see RevlogV2Plan wiki page)
72 INDEX_ENTRY_V2 = struct.Struct(b">Qiiiiii20s12xQi20x")
73 assert INDEX_ENTRY_V2.size == 32 * 3
74
60 75 # revlog index flags
61 76
62 77 # For historical reasons, revlog's internal flags were exposed via the
General Comments 0
You need to be logged in to leave comments. Login now