241 cls = InlinedIndexObject2 if revlogv2 else InlinedIndexObject |
241 cls = InlinedIndexObject2 if revlogv2 else InlinedIndexObject |
242 return cls(data, inline), (0, data) |
242 return cls(data, inline), (0, data) |
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): |
264 """ |
251 """ |
265 Replace an existing index entry's sidedata offset and length with new |
252 Replace an existing index entry's sidedata offset and length with new |