requirements.py
121 lines
| 4.6 KiB
| text/x-python
|
PythonLexer
/ mercurial / requirements.py
|
r45932 | # requirements.py - objects and functions related to repository requirements | ||
# | ||||
|
r47575 | # Copyright 2005-2007 Olivia Mackall <olivia@selenic.com> | ||
|
r45932 | # | ||
# This software may be used and distributed according to the terms of the | ||||
# GNU General Public License version 2 or any later version. | ||||
from __future__ import absolute_import | ||||
r49448 | # obsolete experimental requirements: | |||
# - manifestv2: An experimental new manifest format that allowed | ||||
# for stem compression of long paths. Experiment ended up not | ||||
# being successful (repository sizes went up due to worse delta | ||||
# chains), and the code was deleted in 4.6. | ||||
|
r47372 | GENERALDELTA_REQUIREMENT = b'generaldelta' | ||
|
r47381 | DOTENCODE_REQUIREMENT = b'dotencode' | ||
|
r47382 | STORE_REQUIREMENT = b'store' | ||
|
r47383 | FNCACHE_REQUIREMENT = b'fncache' | ||
|
r47372 | |||
r49644 | DIRSTATE_TRACKED_HINT_V1 = b'dirstate-tracked-key-v1' | |||
r49116 | DIRSTATE_V2_REQUIREMENT = b'dirstate-v2' | |||
|
r48052 | |||
|
r45932 | # When narrowing is finalized and no longer subject to format changes, | ||
# we should move this to just "narrow" or similar. | ||||
NARROW_REQUIREMENT = b'narrowhg-experimental' | ||||
# Enables sparse working directory usage | ||||
SPARSE_REQUIREMENT = b'exp-sparse' | ||||
# Enables the internal phase which is used to hide changesets instead | ||||
# of stripping them | ||||
INTERNAL_PHASE_REQUIREMENT = b'internal-phase' | ||||
# Stores manifest in Tree structure | ||||
TREEMANIFEST_REQUIREMENT = b'treemanifest' | ||||
|
r45933 | |||
|
r47371 | REVLOGV1_REQUIREMENT = b'revlogv1' | ||
r49498 | # allow using ZSTD as compression engine for revlog content | |||
REVLOG_COMPRESSION_ZSTD = b'revlog-compression-zstd' | ||||
|
r45933 | # Increment the sub-version when the revlog v2 format changes to lock out old | ||
# clients. | ||||
r48037 | CHANGELOGV2_REQUIREMENT = b'exp-changelog-v2' | |||
# Increment the sub-version when the revlog v2 format changes to lock out old | ||||
# clients. | ||||
|
r47438 | REVLOGV2_REQUIREMENT = b'exp-revlogv2.2' | ||
|
r45933 | |||
# A repository with the sparserevlog feature will have delta chains that | ||||
# can spread over a larger span. Sparse reading cuts these large spans into | ||||
# pieces, so that each piece isn't too big. | ||||
# Without the sparserevlog capability, reading from the repository could use | ||||
# huge amounts of memory, because the whole span would be read at once, | ||||
# including all the intermediate revisions that aren't pertinent for the chain. | ||||
# This is why once a repository has enabled sparse-read, it becomes required. | ||||
SPARSEREVLOG_REQUIREMENT = b'sparserevlog' | ||||
# A repository with the the copies-sidedata-changeset requirement will store | ||||
# copies related information in changeset's sidedata. | ||||
COPIESSDC_REQUIREMENT = b'exp-copies-sidedata-changeset' | ||||
# The repository use persistent nodemap for the changelog and the manifest. | ||||
NODEMAP_REQUIREMENT = b'persistent-nodemap' | ||||
|
r45934 | |||
|
r45946 | # Denotes that the current repository is a share | ||
SHARED_REQUIREMENT = b'shared' | ||||
# Denotes that current repository is a share and the shared source path is | ||||
# relative to the current repository root path | ||||
RELATIVE_SHARED_REQUIREMENT = b'relshared' | ||||
|
r46055 | # A repository with share implemented safely. The repository has different | ||
# store and working copy requirements i.e. both `.hg/requires` and | ||||
# `.hg/store/requires` are present. | ||||
|
r47052 | SHARESAFE_REQUIREMENT = b'share-safe' | ||
|
r46055 | |||
r49445 | # Bookmarks must be stored in the `store` part of the repository and will be | |||
# share accross shares | ||||
BOOKMARKS_IN_STORE_REQUIREMENT = b'bookmarksinstore' | ||||
|
r45934 | # List of requirements which are working directory specific | ||
# These requirements cannot be shared between repositories if they | ||||
# share the same store | ||||
|
r45946 | # * sparse is a working directory specific functionality and hence working | ||
# directory specific requirement | ||||
# * SHARED_REQUIREMENT and RELATIVE_SHARED_REQUIREMENT are requirements which | ||||
# represents that the current working copy/repository shares store of another | ||||
# repo. Hence both of them should be stored in working copy | ||||
|
r46055 | # * SHARESAFE_REQUIREMENT needs to be stored in working dir to mark that rest of | ||
# the requirements are stored in store's requires | ||||
|
r48052 | # * DIRSTATE_V2_REQUIREMENT affects .hg/dirstate, of which there is one per | ||
# working directory. | ||||
|
r45946 | WORKING_DIR_REQUIREMENTS = { | ||
SPARSE_REQUIREMENT, | ||||
SHARED_REQUIREMENT, | ||||
RELATIVE_SHARED_REQUIREMENT, | ||||
|
r46055 | SHARESAFE_REQUIREMENT, | ||
r49644 | DIRSTATE_TRACKED_HINT_V1, | |||
|
r48052 | DIRSTATE_V2_REQUIREMENT, | ||
|
r45946 | } | ||
r49447 | ||||
# List of requirement that impact "stream-clone" (and hardlink clone) and | ||||
# cannot be changed in such cases. | ||||
# | ||||
# requirements not in this list are safe to be altered during stream-clone. | ||||
# | ||||
# note: the list is currently inherited from previous code and miss some relevant requirement while containing some irrelevant ones. | ||||
STREAM_FIXED_REQUIREMENTS = { | ||||
BOOKMARKS_IN_STORE_REQUIREMENT, | ||||
CHANGELOGV2_REQUIREMENT, | ||||
COPIESSDC_REQUIREMENT, | ||||
GENERALDELTA_REQUIREMENT, | ||||
r49500 | INTERNAL_PHASE_REQUIREMENT, | |||
r49498 | REVLOG_COMPRESSION_ZSTD, | |||
r49447 | REVLOGV1_REQUIREMENT, | |||
REVLOGV2_REQUIREMENT, | ||||
SPARSEREVLOG_REQUIREMENT, | ||||
TREEMANIFEST_REQUIREMENT, | ||||
} | ||||