comparison mercurial/localrepo.py @ 47263:6c84fc9c9a90

changelogv2: introduce a "changelogv2" feature Right now, this means using revlogv2, but only for the changelog. We will have the format more unique in future changesets. Differential Revision: https://phab.mercurial-scm.org/D10660
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Mon, 29 Mar 2021 22:40:54 +0200
parents ccdd280d1d0d
children a07381751dc9
comparison
equal deleted inserted replaced
47262:468e451fc0de 47263:6c84fc9c9a90
735 hgvfs.createmode = store.createmode 735 hgvfs.createmode = store.createmode
736 736
737 storevfs = store.vfs 737 storevfs = store.vfs
738 storevfs.options = resolvestorevfsoptions(ui, requirements, features) 738 storevfs.options = resolvestorevfsoptions(ui, requirements, features)
739 739
740 if requirementsmod.REVLOGV2_REQUIREMENT in requirements: 740 if (
741 requirementsmod.REVLOGV2_REQUIREMENT in requirements
742 or requirementsmod.CHANGELOGV2_REQUIREMENT in requirements
743 ):
741 features.add(repository.REPO_FEATURE_SIDE_DATA) 744 features.add(repository.REPO_FEATURE_SIDE_DATA)
742 # the revlogv2 docket introduced race condition that we need to fix 745 # the revlogv2 docket introduced race condition that we need to fix
743 features.discard(repository.REPO_FEATURE_STREAM_CLONE) 746 features.discard(repository.REPO_FEATURE_STREAM_CLONE)
744 747
745 # The cache vfs is used to manage cache files. 748 # The cache vfs is used to manage cache files.
1019 1022
1020 if requirementsmod.REVLOGV1_REQUIREMENT in requirements: 1023 if requirementsmod.REVLOGV1_REQUIREMENT in requirements:
1021 options[b'revlogv1'] = True 1024 options[b'revlogv1'] = True
1022 if requirementsmod.REVLOGV2_REQUIREMENT in requirements: 1025 if requirementsmod.REVLOGV2_REQUIREMENT in requirements:
1023 options[b'revlogv2'] = True 1026 options[b'revlogv2'] = True
1027 if requirementsmod.CHANGELOGV2_REQUIREMENT in requirements:
1028 options[b'changelogv2'] = True
1024 1029
1025 if requirementsmod.GENERALDELTA_REQUIREMENT in requirements: 1030 if requirementsmod.GENERALDELTA_REQUIREMENT in requirements:
1026 options[b'generaldelta'] = True 1031 options[b'generaldelta'] = True
1027 1032
1028 # experimental config: format.chunkcachesize 1033 # experimental config: format.chunkcachesize
1218 requirementsmod.REVLOGV1_REQUIREMENT, 1223 requirementsmod.REVLOGV1_REQUIREMENT,
1219 requirementsmod.GENERALDELTA_REQUIREMENT, 1224 requirementsmod.GENERALDELTA_REQUIREMENT,
1220 requirementsmod.TREEMANIFEST_REQUIREMENT, 1225 requirementsmod.TREEMANIFEST_REQUIREMENT,
1221 requirementsmod.COPIESSDC_REQUIREMENT, 1226 requirementsmod.COPIESSDC_REQUIREMENT,
1222 requirementsmod.REVLOGV2_REQUIREMENT, 1227 requirementsmod.REVLOGV2_REQUIREMENT,
1228 requirementsmod.CHANGELOGV2_REQUIREMENT,
1223 requirementsmod.SPARSEREVLOG_REQUIREMENT, 1229 requirementsmod.SPARSEREVLOG_REQUIREMENT,
1224 requirementsmod.NODEMAP_REQUIREMENT, 1230 requirementsmod.NODEMAP_REQUIREMENT,
1225 bookmarks.BOOKMARKS_IN_STORE_REQUIREMENT, 1231 bookmarks.BOOKMARKS_IN_STORE_REQUIREMENT,
1226 requirementsmod.SHARESAFE_REQUIREMENT, 1232 requirementsmod.SHARESAFE_REQUIREMENT,
1227 } 1233 }
3527 requirements.add(requirementsmod.REVLOGV2_REQUIREMENT) 3533 requirements.add(requirementsmod.REVLOGV2_REQUIREMENT)
3528 requirements.add(requirementsmod.COPIESSDC_REQUIREMENT) 3534 requirements.add(requirementsmod.COPIESSDC_REQUIREMENT)
3529 if ui.configbool(b'experimental', b'treemanifest'): 3535 if ui.configbool(b'experimental', b'treemanifest'):
3530 requirements.add(requirementsmod.TREEMANIFEST_REQUIREMENT) 3536 requirements.add(requirementsmod.TREEMANIFEST_REQUIREMENT)
3531 3537
3538 changelogv2 = ui.config(b'format', b'exp-use-changelog-v2')
3539 if changelogv2 == b'enable-unstable-format-and-corrupt-my-data':
3540 requirements.add(requirementsmod.CHANGELOGV2_REQUIREMENT)
3541
3532 revlogv2 = ui.config(b'experimental', b'revlogv2') 3542 revlogv2 = ui.config(b'experimental', b'revlogv2')
3533 if revlogv2 == b'enable-unstable-format-and-corrupt-my-data': 3543 if revlogv2 == b'enable-unstable-format-and-corrupt-my-data':
3534 requirements.discard(requirementsmod.REVLOGV1_REQUIREMENT) 3544 requirements.discard(requirementsmod.REVLOGV1_REQUIREMENT)
3535 requirements.add(requirementsmod.REVLOGV2_REQUIREMENT) 3545 requirements.add(requirementsmod.REVLOGV2_REQUIREMENT)
3536 # experimental config: format.internal-phase 3546 # experimental config: format.internal-phase