Mercurial > public > mercurial-scm > hg-stable
view mercurial/requirements.py @ 45394:bd56597b2254
requirements: introduce a set of working directory specific requirements
Some requirements like the SPARSE_REQUIREMENT is working directory specific and
cannot be shared. We add a set which will contain all these requirements.
This is not the best we can do, I think having a rich requirement class will be
much better but that will be out of scope for this series.
Differential Revision: https://phab.mercurial-scm.org/D8924
author | Pulkit Goyal <7895pulkit@gmail.com> |
---|---|
date | Mon, 10 Aug 2020 18:08:15 -0700 |
parents | d7dcc75a3eae |
children | 034d94f8761b |
line wrap: on
line source
# requirements.py - objects and functions related to repository requirements # # Copyright 2005-2007 Matt Mackall <mpm@selenic.com> # # 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 # 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' # Increment the sub-version when the revlog v2 format changes to lock out old # clients. REVLOGV2_REQUIREMENT = b'exp-revlogv2.1' # 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 sidedataflag requirement will allow to store extra # information for revision without altering their original hashes. SIDEDATA_REQUIREMENT = b'exp-sidedata-flag' # 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' # List of requirements which are working directory specific # These requirements cannot be shared between repositories if they # share the same store WORKING_DIR_REQUIREMENTS = {SPARSE_REQUIREMENT}