Mercurial > hg
comparison mercurial/revlog.py @ 47259:07641bafa646
revlog: compress sidedata when doing "post-pull" sidedata update
All path writing sidedata are now using compression (when appropriate).
Differential Revision: https://phab.mercurial-scm.org/D10656
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Mon, 03 May 2021 23:40:05 +0200 |
parents | c4dbb7636a12 |
children | 80164d50ae3d |
comparison
equal
deleted
inserted
replaced
47258:c4dbb7636a12 | 47259:07641bafa646 |
---|---|
3379 ) | 3379 ) |
3380 | 3380 |
3381 serialized_sidedata = sidedatautil.serialize_sidedata( | 3381 serialized_sidedata = sidedatautil.serialize_sidedata( |
3382 new_sidedata | 3382 new_sidedata |
3383 ) | 3383 ) |
3384 | |
3385 sidedata_compression_mode = COMP_MODE_INLINE | |
3386 if serialized_sidedata and self.hassidedata: | |
3387 sidedata_compression_mode = COMP_MODE_PLAIN | |
3388 h, comp_sidedata = self.compress(serialized_sidedata) | |
3389 if ( | |
3390 h != b'u' | |
3391 and comp_sidedata[0] != b'\0' | |
3392 and len(comp_sidedata) < len(serialized_sidedata) | |
3393 ): | |
3394 assert not h | |
3395 if ( | |
3396 comp_sidedata[0] | |
3397 == self._docket.default_compression_header | |
3398 ): | |
3399 sidedata_compression_mode = COMP_MODE_DEFAULT | |
3400 serialized_sidedata = comp_sidedata | |
3401 else: | |
3402 sidedata_compression_mode = COMP_MODE_INLINE | |
3403 serialized_sidedata = comp_sidedata | |
3384 if entry[8] != 0 or entry[9] != 0: | 3404 if entry[8] != 0 or entry[9] != 0: |
3385 # rewriting entries that already have sidedata is not | 3405 # rewriting entries that already have sidedata is not |
3386 # supported yet, because it introduces garbage data in the | 3406 # supported yet, because it introduces garbage data in the |
3387 # revlog. | 3407 # revlog. |
3388 msg = b"rewriting existing sidedata is not supported yet" | 3408 msg = b"rewriting existing sidedata is not supported yet" |
3393 new_offset_flags = entry[0] | flags[0] & ~flags[1] | 3413 new_offset_flags = entry[0] | flags[0] & ~flags[1] |
3394 entry_update = ( | 3414 entry_update = ( |
3395 current_offset, | 3415 current_offset, |
3396 len(serialized_sidedata), | 3416 len(serialized_sidedata), |
3397 new_offset_flags, | 3417 new_offset_flags, |
3418 sidedata_compression_mode, | |
3398 ) | 3419 ) |
3399 | 3420 |
3400 # the sidedata computation might have move the file cursors around | 3421 # the sidedata computation might have move the file cursors around |
3401 dfh.seek(current_offset, os.SEEK_SET) | 3422 dfh.seek(current_offset, os.SEEK_SET) |
3402 dfh.write(serialized_sidedata) | 3423 dfh.write(serialized_sidedata) |