##// 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 class Index2Mixin(object):
245 class Index2Mixin(object):
246 # 6 bytes: offset
246 index_format = revlog_constants.INDEX_ENTRY_V2.format
247 # 2 bytes: flags
247 index_size = revlog_constants.INDEX_ENTRY_V2.size
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
261 null_item = (0, 0, 0, -1, -1, -1, -1, nullid, 0, 0)
248 null_item = (0, 0, 0, -1, -1, -1, -1, nullid, 0, 0)
262
249
263 def replace_sidedata_info(self, i, sidedata_offset, sidedata_length):
250 def replace_sidedata_info(self, i, sidedata_offset, sidedata_length):
@@ -43,6 +43,7 b' from .revlogutils.constants import ('
43 FLAG_INLINE_DATA,
43 FLAG_INLINE_DATA,
44 INDEX_ENTRY_V0,
44 INDEX_ENTRY_V0,
45 INDEX_ENTRY_V1,
45 INDEX_ENTRY_V1,
46 INDEX_ENTRY_V2,
46 REVLOGV0,
47 REVLOGV0,
47 REVLOGV1,
48 REVLOGV1,
48 REVLOGV1_FLAGS,
49 REVLOGV1_FLAGS,
@@ -87,7 +88,6 b' from .utils import ('
87 storageutil,
88 storageutil,
88 stringutil,
89 stringutil,
89 )
90 )
90 from .pure import parsers as pureparsers
91
91
92 # blanked usage of all the name to prevent pyflakes constraints
92 # blanked usage of all the name to prevent pyflakes constraints
93 # We need these name available in the module for extensions.
93 # We need these name available in the module for extensions.
@@ -352,20 +352,16 b' class revlogio(object):'
352 return p
352 return p
353
353
354
354
355 indexformatv2 = struct.Struct(pureparsers.Index2Mixin.index_format)
356 indexformatv2_pack = indexformatv2.pack
357
358
359 class revlogv2io(object):
355 class revlogv2io(object):
360 def __init__(self):
356 def __init__(self):
361 self.size = indexformatv2.size
357 self.size = INDEX_ENTRY_V2.size
362
358
363 def parseindex(self, data, inline):
359 def parseindex(self, data, inline):
364 index, cache = parsers.parse_index2(data, inline, revlogv2=True)
360 index, cache = parsers.parse_index2(data, inline, revlogv2=True)
365 return index, cache
361 return index, cache
366
362
367 def packentry(self, entry, node, version, rev):
363 def packentry(self, entry, node, version, rev):
368 p = indexformatv2_pack(*entry)
364 p = INDEX_ENTRY_V2.pack(*entry)
369 if rev == 0:
365 if rev == 0:
370 p = versionformat_pack(version) + p[4:]
366 p = versionformat_pack(version) + p[4:]
371 return p
367 return p
@@ -57,6 +57,21 b' INDEX_ENTRY_V0 = struct.Struct(b">4l20s2'
57 INDEX_ENTRY_V1 = struct.Struct(b">Qiiiiii20s12x")
57 INDEX_ENTRY_V1 = struct.Struct(b">Qiiiiii20s12x")
58 assert INDEX_ENTRY_V1.size == 32 * 2
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 # revlog index flags
75 # revlog index flags
61
76
62 # For historical reasons, revlog's internal flags were exposed via the
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