##// END OF EJS Templates
git: drop the zope `repository.ifilestorage` decoration on `gitlog.filelog`...
git: drop the zope `repository.ifilestorage` decoration on `gitlog.filelog` The next logical step is to disable the conditional import of `zope` in the `mercurial.interfaces.util` module, and just run with the no-op decorators. But doing that then generates these pytype errors: File "/mnt/c/Users/Matt/hg/hgext/git/gitlog.py", line 485, in read: No attribute 'gitrepo' on filelog [attribute-error] File "/mnt/c/Users/Matt/hg/hgext/git/gitlog.py", line 495, in lookup: No attribute 'gitrepo' on filelog [attribute-error] File "/mnt/c/Users/Matt/hg/hgext/git/gitlog.py", line 505, in add: No attribute 'gitrepo' on filelog [attribute-error] File "/mnt/c/Users/Matt/hg/hgext/git/gitlog.py", line 508, in __iter__: No attribute '_db' on filelog [attribute-error] File "/mnt/c/Users/Matt/hg/hgext/git/gitlog.py", line 522, in rev: No attribute '_db' on filelog [attribute-error] File "/mnt/c/Users/Matt/hg/hgext/git/gitlog.py", line 534, in node: No attribute '_db' on filelog [attribute-error] File "/mnt/c/Users/Matt/hg/hgext/git/gitlog.py", line 549, in parents: No attribute '_db' on filelog [attribute-error] File "/mnt/c/Users/Matt/hg/hgext/git/gitlog.py", line 556, in parents: No attribute '_db' on filelog [attribute-error] File "/mnt/c/Users/Matt/hg/hgext/git/gitlog.py", line 564, in parents: No attribute 'gitrepo' on filelog [attribute-error] File "/mnt/c/Users/Matt/hg/hgext/git/gitlog.py", line 564, in parents: No attribute '_db' on filelog [attribute-error] I'm not sure what exactly the issue is, but the pyi file that was being generated up to this point has `filelog` typed as `Any` (because it had a decorator, and pytype chokes on that), and `baselog` was typed as a class. So it apparently can't see the `_db` and `gitrepo` attributes of the subclass, because it doesn't think `filelog` is a class. Leave the decorator commented out so it hits when searching for the remaining zope things that need to be updated to Protocol.

File last commit:

r52756:f4733654 default
r53341:cdb45eb7 default
Show More
requirements.py
126 lines | 4.8 KiB | text/x-python | PythonLexer
Pulkit Goyal
requirements: introduce new requirements related module...
r45932 # requirements.py - objects and functions related to repository requirements
#
Raphaël Gomès
contributor: change mentions of mpm to olivia...
r47575 # Copyright 2005-2007 Olivia Mackall <olivia@selenic.com>
Pulkit Goyal
requirements: introduce new requirements related module...
r45932 #
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
Matt Harbison
typing: add `from __future__ import annotations` to most files...
r52756 from __future__ import annotations
Pulkit Goyal
requirements: introduce new requirements related module...
r45932
requirements: move the comment about manifestv2 in the module...
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.
Raphaël Gomès
requirements: also add a generaldelta constant...
r47372 GENERALDELTA_REQUIREMENT = b'generaldelta'
Raphaël Gomès
requirements: also add a dotencode constant...
r47381 DOTENCODE_REQUIREMENT = b'dotencode'
Raphaël Gomès
requirements: also add a store constant...
r47382 STORE_REQUIREMENT = b'store'
Raphaël Gomès
requirements: also add a fncache constant...
r47383 FNCACHE_REQUIREMENT = b'fncache'
Raphaël Gomès
requirements: also add a generaldelta constant...
r47372
tracked-key: remove the dual write and rename to tracked-hint...
r49644 DIRSTATE_TRACKED_HINT_V1 = b'dirstate-tracked-key-v1'
dirstate-v2: freeze the on-disk format...
r49116 DIRSTATE_V2_REQUIREMENT = b'dirstate-v2'
Simon Sapin
dirstate-v2: Add a new experimental `exp-dirstate-v2` repository requirement...
r48052
Pulkit Goyal
requirements: introduce new requirements related module...
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
phase: rename the requirement for internal-phase (BC)...
r50347 INTERNAL_PHASE_REQUIREMENT = b'internal-phase-2'
Pulkit Goyal
requirements: introduce new requirements related module...
r45932
phase: introduce a dedicated requirement for the `archived` phase...
r50346 # Enables the internal phase which is used to hide changesets instead
# of stripping them
ARCHIVED_PHASE_REQUIREMENT = b'exp-archived-phase'
Pulkit Goyal
requirements: introduce new requirements related module...
r45932 # Stores manifest in Tree structure
TREEMANIFEST_REQUIREMENT = b'treemanifest'
Pulkit Goyal
localrepo: move requirements constant to requirements module...
r45933
Raphaël Gomès
requirements: add constant for revlog v1 requirement...
r47371 REVLOGV1_REQUIREMENT = b'revlogv1'
requirements: add an official `REVLOG_COMPRESSION_ZSTD` const...
r49498 # allow using ZSTD as compression engine for revlog content
REVLOG_COMPRESSION_ZSTD = b'revlog-compression-zstd'
Pulkit Goyal
localrepo: move requirements constant to requirements module...
r45933 # Increment the sub-version when the revlog v2 format changes to lock out old
# clients.
changelogv2: introduce a "changelogv2" feature...
r48037 CHANGELOGV2_REQUIREMENT = b'exp-changelog-v2'
# Increment the sub-version when the revlog v2 format changes to lock out old
# clients.
Raphaël Gomès
revlog: introduce v2 format...
r47438 REVLOGV2_REQUIREMENT = b'exp-revlogv2.2'
Pulkit Goyal
localrepo: move requirements constant to requirements module...
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'
Pulkit Goyal
requirements: introduce a set of working directory specific requirements...
r45934
Pulkit Goyal
requirements: introduce constants for `shared` and `relshared` requirements...
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'
Pulkit Goyal
share: introduce config option to store requires in .hg/store...
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.
Pulkit Goyal
share: move share safe functionality out of experimental...
r47052 SHARESAFE_REQUIREMENT = b'share-safe'
Pulkit Goyal
share: introduce config option to store requires in .hg/store...
r46055
requirements: move "bookmark in store" requirements in the right module...
r49445 # Bookmarks must be stored in the `store` part of the repository and will be
# share accross shares
BOOKMARKS_IN_STORE_REQUIREMENT = b'bookmarksinstore'
Pulkit Goyal
requirements: introduce a set of working directory specific requirements...
r45934 # List of requirements which are working directory specific
# These requirements cannot be shared between repositories if they
# share the same store
Pulkit Goyal
requirements: introduce constants for `shared` and `relshared` requirements...
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
Pulkit Goyal
share: introduce config option to store requires in .hg/store...
r46055 # * SHARESAFE_REQUIREMENT needs to be stored in working dir to mark that rest of
# the requirements are stored in store's requires
Simon Sapin
dirstate-v2: Add a new experimental `exp-dirstate-v2` repository requirement...
r48052 # * DIRSTATE_V2_REQUIREMENT affects .hg/dirstate, of which there is one per
# working directory.
Pulkit Goyal
requirements: introduce constants for `shared` and `relshared` requirements...
r45946 WORKING_DIR_REQUIREMENTS = {
SPARSE_REQUIREMENT,
SHARED_REQUIREMENT,
RELATIVE_SHARED_REQUIREMENT,
Pulkit Goyal
share: introduce config option to store requires in .hg/store...
r46055 SHARESAFE_REQUIREMENT,
tracked-key: remove the dual write and rename to tracked-hint...
r49644 DIRSTATE_TRACKED_HINT_V1,
Simon Sapin
dirstate-v2: Add a new experimental `exp-dirstate-v2` repository requirement...
r48052 DIRSTATE_V2_REQUIREMENT,
Pulkit Goyal
requirements: introduce constants for `shared` and `relshared` requirements...
r45946 }
stream-clone: add a explicit set list requirements relevant to stream clone...
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 = {
phase: introduce a dedicated requirement for the `archived` phase...
r50346 ARCHIVED_PHASE_REQUIREMENT,
stream-clone: add a explicit set list requirements relevant to stream clone...
r49447 BOOKMARKS_IN_STORE_REQUIREMENT,
CHANGELOGV2_REQUIREMENT,
COPIESSDC_REQUIREMENT,
GENERALDELTA_REQUIREMENT,
stream-clone: stop considering working copy only requirements...
r49500 INTERNAL_PHASE_REQUIREMENT,
requirements: add an official `REVLOG_COMPRESSION_ZSTD` const...
r49498 REVLOG_COMPRESSION_ZSTD,
stream-clone: add a explicit set list requirements relevant to stream clone...
r49447 REVLOGV1_REQUIREMENT,
REVLOGV2_REQUIREMENT,
SPARSEREVLOG_REQUIREMENT,
TREEMANIFEST_REQUIREMENT,
}