277 |
277 |
278 class Index2Mixin(object): |
278 class Index2Mixin(object): |
279 index_format = revlog_constants.INDEX_ENTRY_V2 |
279 index_format = revlog_constants.INDEX_ENTRY_V2 |
280 |
280 |
281 def replace_sidedata_info( |
281 def replace_sidedata_info( |
282 self, i, sidedata_offset, sidedata_length, offset_flags |
282 self, rev, sidedata_offset, sidedata_length, offset_flags |
283 ): |
283 ): |
284 """ |
284 """ |
285 Replace an existing index entry's sidedata offset and length with new |
285 Replace an existing index entry's sidedata offset and length with new |
286 ones. |
286 ones. |
287 This cannot be used outside of the context of sidedata rewriting, |
287 This cannot be used outside of the context of sidedata rewriting, |
288 inside the transaction that creates the revision `i`. |
288 inside the transaction that creates the revision `rev`. |
289 """ |
289 """ |
290 if i < 0: |
290 if rev < 0: |
291 raise KeyError |
291 raise KeyError |
292 self._check_index(i) |
292 self._check_index(rev) |
293 sidedata_format = b">Qi" |
293 sidedata_format = b">Qi" |
294 packed_size = struct.calcsize(sidedata_format) |
294 packed_size = struct.calcsize(sidedata_format) |
295 if i >= self._lgt: |
295 if rev >= self._lgt: |
296 packed = _pack(sidedata_format, sidedata_offset, sidedata_length) |
296 packed = _pack(sidedata_format, sidedata_offset, sidedata_length) |
297 old = self._extra[i - self._lgt] |
297 old = self._extra[rev - self._lgt] |
298 offset_flags = struct.pack(b">Q", offset_flags) |
298 offset_flags = struct.pack(b">Q", offset_flags) |
299 new = offset_flags + old[8:64] + packed + old[64 + packed_size :] |
299 new = offset_flags + old[8:64] + packed + old[64 + packed_size :] |
300 self._extra[i - self._lgt] = new |
300 self._extra[rev - self._lgt] = new |
301 else: |
301 else: |
302 msg = b"cannot rewrite entries outside of this transaction" |
302 msg = b"cannot rewrite entries outside of this transaction" |
303 raise KeyError(msg) |
303 raise KeyError(msg) |
304 |
304 |
305 def _unpack_entry(self, data): |
305 def _unpack_entry(self, data): |