mercurial/requirements.py
author Raphaël Gomès <rgomes@octobus.net>
Wed, 03 Mar 2021 12:33:24 +0100
changeset 46636 c3773636ddbb
parent 46627 f4c325bf80fc
child 46637 ab58098bebed
permissions -rw-r--r--
requirements: also add a dotencode constant Continue the cleanup to the remaining requirements Differential Revision: https://phab.mercurial-scm.org/D10107
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
45372
77b8588dd84e requirements: introduce new requirements related module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
     1
# requirements.py - objects and functions related to repository requirements
77b8588dd84e requirements: introduce new requirements related module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
     2
#
77b8588dd84e requirements: introduce new requirements related module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
     3
# Copyright 2005-2007 Matt Mackall <mpm@selenic.com>
77b8588dd84e requirements: introduce new requirements related module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
     4
#
77b8588dd84e requirements: introduce new requirements related module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
     5
# This software may be used and distributed according to the terms of the
77b8588dd84e requirements: introduce new requirements related module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
     6
# GNU General Public License version 2 or any later version.
77b8588dd84e requirements: introduce new requirements related module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
     7
77b8588dd84e requirements: introduce new requirements related module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
     8
from __future__ import absolute_import
77b8588dd84e requirements: introduce new requirements related module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
     9
46627
f4c325bf80fc requirements: also add a generaldelta constant
Raphaël Gomès <rgomes@octobus.net>
parents: 46626
diff changeset
    10
GENERALDELTA_REQUIREMENT = b'generaldelta'
46636
c3773636ddbb requirements: also add a dotencode constant
Raphaël Gomès <rgomes@octobus.net>
parents: 46627
diff changeset
    11
DOTENCODE_REQUIREMENT = b'dotencode'
46627
f4c325bf80fc requirements: also add a generaldelta constant
Raphaël Gomès <rgomes@octobus.net>
parents: 46626
diff changeset
    12
45372
77b8588dd84e requirements: introduce new requirements related module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    13
# When narrowing is finalized and no longer subject to format changes,
77b8588dd84e requirements: introduce new requirements related module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    14
# we should move this to just "narrow" or similar.
77b8588dd84e requirements: introduce new requirements related module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    15
NARROW_REQUIREMENT = b'narrowhg-experimental'
77b8588dd84e requirements: introduce new requirements related module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    16
77b8588dd84e requirements: introduce new requirements related module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    17
# Enables sparse working directory usage
77b8588dd84e requirements: introduce new requirements related module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    18
SPARSE_REQUIREMENT = b'exp-sparse'
77b8588dd84e requirements: introduce new requirements related module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    19
77b8588dd84e requirements: introduce new requirements related module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    20
# Enables the internal phase which is used to hide changesets instead
77b8588dd84e requirements: introduce new requirements related module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    21
# of stripping them
77b8588dd84e requirements: introduce new requirements related module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    22
INTERNAL_PHASE_REQUIREMENT = b'internal-phase'
77b8588dd84e requirements: introduce new requirements related module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    23
77b8588dd84e requirements: introduce new requirements related module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    24
# Stores manifest in Tree structure
77b8588dd84e requirements: introduce new requirements related module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    25
TREEMANIFEST_REQUIREMENT = b'treemanifest'
45373
d7dcc75a3eae localrepo: move requirements constant to requirements module
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45372
diff changeset
    26
46626
ee91966aec0f requirements: add constant for revlog v1 requirement
Raphaël Gomès <rgomes@octobus.net>
parents: 46334
diff changeset
    27
REVLOGV1_REQUIREMENT = b'revlogv1'
ee91966aec0f requirements: add constant for revlog v1 requirement
Raphaël Gomès <rgomes@octobus.net>
parents: 46334
diff changeset
    28
45373
d7dcc75a3eae localrepo: move requirements constant to requirements module
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45372
diff changeset
    29
# Increment the sub-version when the revlog v2 format changes to lock out old
d7dcc75a3eae localrepo: move requirements constant to requirements module
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45372
diff changeset
    30
# clients.
d7dcc75a3eae localrepo: move requirements constant to requirements module
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45372
diff changeset
    31
REVLOGV2_REQUIREMENT = b'exp-revlogv2.1'
d7dcc75a3eae localrepo: move requirements constant to requirements module
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45372
diff changeset
    32
d7dcc75a3eae localrepo: move requirements constant to requirements module
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45372
diff changeset
    33
# A repository with the sparserevlog feature will have delta chains that
d7dcc75a3eae localrepo: move requirements constant to requirements module
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45372
diff changeset
    34
# can spread over a larger span. Sparse reading cuts these large spans into
d7dcc75a3eae localrepo: move requirements constant to requirements module
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45372
diff changeset
    35
# pieces, so that each piece isn't too big.
d7dcc75a3eae localrepo: move requirements constant to requirements module
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45372
diff changeset
    36
# Without the sparserevlog capability, reading from the repository could use
d7dcc75a3eae localrepo: move requirements constant to requirements module
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45372
diff changeset
    37
# huge amounts of memory, because the whole span would be read at once,
d7dcc75a3eae localrepo: move requirements constant to requirements module
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45372
diff changeset
    38
# including all the intermediate revisions that aren't pertinent for the chain.
d7dcc75a3eae localrepo: move requirements constant to requirements module
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45372
diff changeset
    39
# This is why once a repository has enabled sparse-read, it becomes required.
d7dcc75a3eae localrepo: move requirements constant to requirements module
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45372
diff changeset
    40
SPARSEREVLOG_REQUIREMENT = b'sparserevlog'
d7dcc75a3eae localrepo: move requirements constant to requirements module
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45372
diff changeset
    41
d7dcc75a3eae localrepo: move requirements constant to requirements module
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45372
diff changeset
    42
# A repository with the sidedataflag requirement will allow to store extra
d7dcc75a3eae localrepo: move requirements constant to requirements module
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45372
diff changeset
    43
# information for revision without altering their original hashes.
d7dcc75a3eae localrepo: move requirements constant to requirements module
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45372
diff changeset
    44
SIDEDATA_REQUIREMENT = b'exp-sidedata-flag'
d7dcc75a3eae localrepo: move requirements constant to requirements module
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45372
diff changeset
    45
d7dcc75a3eae localrepo: move requirements constant to requirements module
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45372
diff changeset
    46
# A repository with the the copies-sidedata-changeset requirement will store
d7dcc75a3eae localrepo: move requirements constant to requirements module
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45372
diff changeset
    47
# copies related information in changeset's sidedata.
d7dcc75a3eae localrepo: move requirements constant to requirements module
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45372
diff changeset
    48
COPIESSDC_REQUIREMENT = b'exp-copies-sidedata-changeset'
d7dcc75a3eae localrepo: move requirements constant to requirements module
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45372
diff changeset
    49
d7dcc75a3eae localrepo: move requirements constant to requirements module
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45372
diff changeset
    50
# The repository use persistent nodemap for the changelog and the manifest.
d7dcc75a3eae localrepo: move requirements constant to requirements module
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45372
diff changeset
    51
NODEMAP_REQUIREMENT = b'persistent-nodemap'
45374
bd56597b2254 requirements: introduce a set of working directory specific requirements
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45373
diff changeset
    52
45386
034d94f8761b requirements: introduce constants for `shared` and `relshared` requirements
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45374
diff changeset
    53
# Denotes that the current repository is a share
034d94f8761b requirements: introduce constants for `shared` and `relshared` requirements
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45374
diff changeset
    54
SHARED_REQUIREMENT = b'shared'
034d94f8761b requirements: introduce constants for `shared` and `relshared` requirements
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45374
diff changeset
    55
034d94f8761b requirements: introduce constants for `shared` and `relshared` requirements
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45374
diff changeset
    56
# Denotes that current repository is a share and the shared source path is
034d94f8761b requirements: introduce constants for `shared` and `relshared` requirements
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45374
diff changeset
    57
# relative to the current repository root path
034d94f8761b requirements: introduce constants for `shared` and `relshared` requirements
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45374
diff changeset
    58
RELATIVE_SHARED_REQUIREMENT = b'relshared'
034d94f8761b requirements: introduce constants for `shared` and `relshared` requirements
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45374
diff changeset
    59
45483
d252f51ab032 share: introduce config option to store requires in .hg/store
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45386
diff changeset
    60
# A repository with share implemented safely. The repository has different
d252f51ab032 share: introduce config option to store requires in .hg/store
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45386
diff changeset
    61
# store and working copy requirements i.e. both `.hg/requires` and
d252f51ab032 share: introduce config option to store requires in .hg/store
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45386
diff changeset
    62
# `.hg/store/requires` are present.
46334
4b0192f592cf share: move share safe functionality out of experimental
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45483
diff changeset
    63
SHARESAFE_REQUIREMENT = b'share-safe'
45483
d252f51ab032 share: introduce config option to store requires in .hg/store
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45386
diff changeset
    64
45374
bd56597b2254 requirements: introduce a set of working directory specific requirements
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45373
diff changeset
    65
# List of requirements which are working directory specific
bd56597b2254 requirements: introduce a set of working directory specific requirements
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45373
diff changeset
    66
# These requirements cannot be shared between repositories if they
bd56597b2254 requirements: introduce a set of working directory specific requirements
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45373
diff changeset
    67
# share the same store
45386
034d94f8761b requirements: introduce constants for `shared` and `relshared` requirements
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45374
diff changeset
    68
# * sparse is a working directory specific functionality and hence working
034d94f8761b requirements: introduce constants for `shared` and `relshared` requirements
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45374
diff changeset
    69
#   directory specific requirement
034d94f8761b requirements: introduce constants for `shared` and `relshared` requirements
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45374
diff changeset
    70
# * SHARED_REQUIREMENT and RELATIVE_SHARED_REQUIREMENT are requirements which
034d94f8761b requirements: introduce constants for `shared` and `relshared` requirements
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45374
diff changeset
    71
#   represents that the current working copy/repository shares store of another
034d94f8761b requirements: introduce constants for `shared` and `relshared` requirements
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45374
diff changeset
    72
#   repo. Hence both of them should be stored in working copy
45483
d252f51ab032 share: introduce config option to store requires in .hg/store
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45386
diff changeset
    73
# * SHARESAFE_REQUIREMENT needs to be stored in working dir to mark that rest of
d252f51ab032 share: introduce config option to store requires in .hg/store
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45386
diff changeset
    74
#   the requirements are stored in store's requires
45386
034d94f8761b requirements: introduce constants for `shared` and `relshared` requirements
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45374
diff changeset
    75
WORKING_DIR_REQUIREMENTS = {
034d94f8761b requirements: introduce constants for `shared` and `relshared` requirements
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45374
diff changeset
    76
    SPARSE_REQUIREMENT,
034d94f8761b requirements: introduce constants for `shared` and `relshared` requirements
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45374
diff changeset
    77
    SHARED_REQUIREMENT,
034d94f8761b requirements: introduce constants for `shared` and `relshared` requirements
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45374
diff changeset
    78
    RELATIVE_SHARED_REQUIREMENT,
45483
d252f51ab032 share: introduce config option to store requires in .hg/store
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45386
diff changeset
    79
    SHARESAFE_REQUIREMENT,
45386
034d94f8761b requirements: introduce constants for `shared` and `relshared` requirements
Pulkit Goyal <7895pulkit@gmail.com>
parents: 45374
diff changeset
    80
}