comparison mercurial/interfaces/repository.py @ 47077:119790e1c67c

cg4: introduce protocol flag to signify the presence of sidedata We need a way of signaling whether the current revision has sidedata or not, and re-using the revision flags would waste potential revlog flags and mix two normally independent layers. In this change, we add a single byte at the start of the ch4 delta header to set potential protocol flags. We also reclaim the revlog flag for sidedata, since it is no longer used, in its place now lives the (also experimental) copytracing flag. When generating deltas, apply the `CG_FLAG_SIDEDATA` flag if there is sidedata. When applying the deltas, if said flag is present, the next chunk contains the sidedata. Differential Revision: https://phab.mercurial-scm.org/D10343
author Raphaël Gomès <rgomes@octobus.net>
date Sat, 10 Apr 2021 11:27:40 +0200
parents 6266d19556ad
children 223b47235d1c
comparison
equal deleted inserted replaced
47076:08e26ef4ad35 47077:119790e1c67c
25 REPO_FEATURE_SHALLOW_FILE_STORAGE = b'shallowfilestorage' 25 REPO_FEATURE_SHALLOW_FILE_STORAGE = b'shallowfilestorage'
26 26
27 REVISION_FLAG_CENSORED = 1 << 15 27 REVISION_FLAG_CENSORED = 1 << 15
28 REVISION_FLAG_ELLIPSIS = 1 << 14 28 REVISION_FLAG_ELLIPSIS = 1 << 14
29 REVISION_FLAG_EXTSTORED = 1 << 13 29 REVISION_FLAG_EXTSTORED = 1 << 13
30 REVISION_FLAG_SIDEDATA = 1 << 12 30 REVISION_FLAG_HASCOPIESINFO = 1 << 12
31 REVISION_FLAG_HASCOPIESINFO = 1 << 11
32 31
33 REVISION_FLAGS_KNOWN = ( 32 REVISION_FLAGS_KNOWN = (
34 REVISION_FLAG_CENSORED 33 REVISION_FLAG_CENSORED
35 | REVISION_FLAG_ELLIPSIS 34 | REVISION_FLAG_ELLIPSIS
36 | REVISION_FLAG_EXTSTORED 35 | REVISION_FLAG_EXTSTORED
37 | REVISION_FLAG_SIDEDATA
38 | REVISION_FLAG_HASCOPIESINFO 36 | REVISION_FLAG_HASCOPIESINFO
39 ) 37 )
40 38
41 CG_DELTAMODE_STD = b'default' 39 CG_DELTAMODE_STD = b'default'
42 CG_DELTAMODE_PREV = b'previous' 40 CG_DELTAMODE_PREV = b'previous'
453 """ 451 """
454 ) 452 )
455 453
456 sidedata = interfaceutil.Attribute( 454 sidedata = interfaceutil.Attribute(
457 """Raw sidedata bytes for the given revision.""" 455 """Raw sidedata bytes for the given revision."""
456 )
457
458 protocol_flags = interfaceutil.Attribute(
459 """Single byte of integer flags that can influence the protocol.
460
461 This is a bitwise composition of the ``storageutil.CG_FLAG*`` constants.
462 """
458 ) 463 )
459 464
460 465
461 class ifilerevisionssequence(interfaceutil.Interface): 466 class ifilerevisionssequence(interfaceutil.Interface):
462 """Contains index data for all revisions of a file. 467 """Contains index data for all revisions of a file.