Mercurial > public > mercurial-scm > hg-stable
annotate mercurial/interfaces/repository.py @ 52526:61f70a6ab645
wirepeer: subclass new `repository.ipeer{,legacy}commands` Proctocol classes
This is the same transformation as 3a90a6fd710d did for dirstate, but the
CamelCase naming was already cleaned up here. See 4ef6dbc27a99 for the benefits
of explicit subclassing.
PyCharm is flagging the `wirepeer.getbundle` function with:
Type of 'getbundle' is incompatible with 'ipeercommands'
I've no idea why- maybe it's because it can infer a `unbundle20 | cg1unpacker`
return there, or maybe it's the kwargs. Something to keep an eye on, but pytype
doesn't complain.
Since we're direct subclassing here and there are only a few methods on these
interfaces, also make them abstract like was done in ef119f914fc1.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Thu, 24 Oct 2024 20:35:02 -0400 |
parents | e123c8a26a70 |
children | 9358d786af24 |
rev | line source |
---|---|
33821
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
1 # repository.py - Interfaces and base classes for repositories and peers. |
47307
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
2 # coding: utf-8 |
33821
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
3 # |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
4 # Copyright 2017 Gregory Szorc <gregory.szorc@gmail.com> |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
5 # |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
6 # This software may be used and distributed according to the terms of the |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
7 # GNU General Public License version 2 or any later version. |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
8 |
51901
f4733654f144
typing: add `from __future__ import annotations` to most files
Matt Harbison <matt_harbison@yahoo.com>
parents:
51837
diff
changeset
|
9 from __future__ import annotations |
33821
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
10 |
52504
cdd4bc69bfc1
interfaces: convert `imanifestrevisionstored` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52503
diff
changeset
|
11 import abc |
52492
0cfcc276b796
interfaces: convert `repository.ipeerconnection` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52491
diff
changeset
|
12 import typing |
0cfcc276b796
interfaces: convert `repository.ipeerconnection` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52491
diff
changeset
|
13 |
52474
26dd402c3497
interfaces: convert the repository zope interfaces to Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52463
diff
changeset
|
14 from typing import ( |
52492
0cfcc276b796
interfaces: convert `repository.ipeerconnection` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52491
diff
changeset
|
15 Any, |
52514
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
16 Callable, |
52503
048c11993d6a
typing: (mostly) align the signatures of `imanifestrevisionstored` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52502
diff
changeset
|
17 Collection, |
52516
3daaa5195a30
typing: align the signatures of `repository.ifilestorage` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52515
diff
changeset
|
18 Iterable, |
3daaa5195a30
typing: align the signatures of `repository.ifilestorage` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52515
diff
changeset
|
19 Iterator, |
52514
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
20 Mapping, |
52474
26dd402c3497
interfaces: convert the repository zope interfaces to Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52463
diff
changeset
|
21 Protocol, |
52521
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
22 Set, |
52474
26dd402c3497
interfaces: convert the repository zope interfaces to Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52463
diff
changeset
|
23 ) |
26dd402c3497
interfaces: convert the repository zope interfaces to Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52463
diff
changeset
|
24 |
42823
268662aac075
interfaces: create a new folder for interfaces and move repository.py in it
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
42795
diff
changeset
|
25 from ..i18n import _ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
26 from .. import error |
33823
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33822
diff
changeset
|
27 |
52492
0cfcc276b796
interfaces: convert `repository.ipeerconnection` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52491
diff
changeset
|
28 if typing.TYPE_CHECKING: |
52521
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
29 from typing import ( |
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
30 ByteString, # TODO: change to Buffer for 3.14 |
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
31 ) |
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
32 |
52492
0cfcc276b796
interfaces: convert `repository.ipeerconnection` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52491
diff
changeset
|
33 # Almost all mercurial modules are only imported in the type checking phase |
0cfcc276b796
interfaces: convert `repository.ipeerconnection` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52491
diff
changeset
|
34 # to avoid circular imports |
52514
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
35 from .. import ( |
52521
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
36 match as matchmod, |
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
37 pathutil, |
52514
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
38 util, |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
39 ) |
52492
0cfcc276b796
interfaces: convert `repository.ipeerconnection` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52491
diff
changeset
|
40 from ..utils import ( |
0cfcc276b796
interfaces: convert `repository.ipeerconnection` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52491
diff
changeset
|
41 urlutil, |
0cfcc276b796
interfaces: convert `repository.ipeerconnection` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52491
diff
changeset
|
42 ) |
0cfcc276b796
interfaces: convert `repository.ipeerconnection` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52491
diff
changeset
|
43 |
52514
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
44 from . import dirstate as intdirstate |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
45 |
52507
d01af74e67b4
interfaces: convert `repository.imanifeststorage` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52505
diff
changeset
|
46 # TODO: make a protocol class for this |
d01af74e67b4
interfaces: convert `repository.imanifeststorage` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52505
diff
changeset
|
47 NodeConstants = Any |
d01af74e67b4
interfaces: convert `repository.imanifeststorage` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52505
diff
changeset
|
48 |
52492
0cfcc276b796
interfaces: convert `repository.ipeerconnection` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52491
diff
changeset
|
49 # TODO: create a Protocol class, since importing uimod here causes a cycle |
0cfcc276b796
interfaces: convert `repository.ipeerconnection` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52491
diff
changeset
|
50 # that confuses pytype. |
0cfcc276b796
interfaces: convert `repository.ipeerconnection` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52491
diff
changeset
|
51 Ui = Any |
0cfcc276b796
interfaces: convert `repository.ipeerconnection` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52491
diff
changeset
|
52 |
52507
d01af74e67b4
interfaces: convert `repository.imanifeststorage` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52505
diff
changeset
|
53 # TODO: make a protocol class for this |
d01af74e67b4
interfaces: convert `repository.imanifeststorage` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52505
diff
changeset
|
54 Vfs = Any |
d01af74e67b4
interfaces: convert `repository.imanifeststorage` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52505
diff
changeset
|
55 |
39855
d89d5bc06eaa
localrepo: define "features" on repository instances (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39849
diff
changeset
|
56 # Local repository feature string. |
d89d5bc06eaa
localrepo: define "features" on repository instances (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39849
diff
changeset
|
57 |
d89d5bc06eaa
localrepo: define "features" on repository instances (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39849
diff
changeset
|
58 # Revlogs are being used for file storage. |
d89d5bc06eaa
localrepo: define "features" on repository instances (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39849
diff
changeset
|
59 REPO_FEATURE_REVLOG_FILE_STORAGE = b'revlogfilestorage' |
d89d5bc06eaa
localrepo: define "features" on repository instances (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39849
diff
changeset
|
60 # The storage part of the repository is shared from an external source. |
d89d5bc06eaa
localrepo: define "features" on repository instances (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39849
diff
changeset
|
61 REPO_FEATURE_SHARED_STORAGE = b'sharedstore' |
39856
1f7b3b980af8
lfs: add repository feature denoting the use of LFS
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39855
diff
changeset
|
62 # LFS supported for backing file storage. |
1f7b3b980af8
lfs: add repository feature denoting the use of LFS
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39855
diff
changeset
|
63 REPO_FEATURE_LFS = b'lfs' |
40028
83146d176c03
localrepo: add repository feature when repo can be stream cloned
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40022
diff
changeset
|
64 # Repository supports being stream cloned. |
83146d176c03
localrepo: add repository feature when repo can be stream cloned
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40022
diff
changeset
|
65 REPO_FEATURE_STREAM_CLONE = b'streamclone' |
47237
19d4802cb304
sidedata: add a 'side-data' repository feature and use it
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47160
diff
changeset
|
66 # Repository supports (at least) some sidedata to be stored |
19d4802cb304
sidedata: add a 'side-data' repository feature and use it
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47160
diff
changeset
|
67 REPO_FEATURE_SIDE_DATA = b'side-data' |
40390
7e3b6c4f01a2
localrepo: support marking repos as having shallow file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40389
diff
changeset
|
68 # Files storage may lack data for all ancestors. |
7e3b6c4f01a2
localrepo: support marking repos as having shallow file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40389
diff
changeset
|
69 REPO_FEATURE_SHALLOW_FILE_STORAGE = b'shallowfilestorage' |
39855
d89d5bc06eaa
localrepo: define "features" on repository instances (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39849
diff
changeset
|
70 |
40048
8e398628a3f2
repository: define and use revision flag constants
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40028
diff
changeset
|
71 REVISION_FLAG_CENSORED = 1 << 15 |
8e398628a3f2
repository: define and use revision flag constants
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40028
diff
changeset
|
72 REVISION_FLAG_ELLIPSIS = 1 << 14 |
8e398628a3f2
repository: define and use revision flag constants
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40028
diff
changeset
|
73 REVISION_FLAG_EXTSTORED = 1 << 13 |
47094
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46793
diff
changeset
|
74 REVISION_FLAG_HASCOPIESINFO = 1 << 12 |
40048
8e398628a3f2
repository: define and use revision flag constants
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40028
diff
changeset
|
75 |
8e398628a3f2
repository: define and use revision flag constants
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40028
diff
changeset
|
76 REVISION_FLAGS_KNOWN = ( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
77 REVISION_FLAG_CENSORED |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
78 | REVISION_FLAG_ELLIPSIS |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
79 | REVISION_FLAG_EXTSTORED |
45671
2d6aea053153
copies: add a HASCOPIESINFO flag to highlight rev with useful data
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45392
diff
changeset
|
80 | REVISION_FLAG_HASCOPIESINFO |
43032
a12a9af7536c
sidedata: add a new revision flag constant for side data
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42824
diff
changeset
|
81 ) |
40048
8e398628a3f2
repository: define and use revision flag constants
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40028
diff
changeset
|
82 |
40495
59a870a4ad6e
changegroup: refactor emitrevision to use a `deltamode` argument
Boris Feld <boris.feld@octobus.net>
parents:
40390
diff
changeset
|
83 CG_DELTAMODE_STD = b'default' |
59a870a4ad6e
changegroup: refactor emitrevision to use a `deltamode` argument
Boris Feld <boris.feld@octobus.net>
parents:
40390
diff
changeset
|
84 CG_DELTAMODE_PREV = b'previous' |
59a870a4ad6e
changegroup: refactor emitrevision to use a `deltamode` argument
Boris Feld <boris.feld@octobus.net>
parents:
40390
diff
changeset
|
85 CG_DELTAMODE_FULL = b'fulltext' |
40497
968dd7e02ac5
changegroup: allow to force delta to be against p1
Boris Feld <boris.feld@octobus.net>
parents:
40496
diff
changeset
|
86 CG_DELTAMODE_P1 = b'p1' |
40495
59a870a4ad6e
changegroup: refactor emitrevision to use a `deltamode` argument
Boris Feld <boris.feld@octobus.net>
parents:
40390
diff
changeset
|
87 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
88 |
47307
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
89 ## Cache related constants: |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
90 # |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
91 # Used to control which cache should be warmed in a repo.updatecaches(…) call. |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
92 |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
93 # Warm branchmaps of all known repoview's filter-level |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
94 CACHE_BRANCHMAP_ALL = b"branchmap-all" |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
95 # Warm branchmaps of repoview's filter-level used by server |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
96 CACHE_BRANCHMAP_SERVED = b"branchmap-served" |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
97 # Warm internal changelog cache (eg: persistent nodemap) |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
98 CACHE_CHANGELOG_CACHE = b"changelog-cache" |
51579
4a8bb136ee77
branchcache: allow to detect "pure topological case" for branchmap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51052
diff
changeset
|
99 # check of a branchmap can use the "pure topo" mode |
4a8bb136ee77
branchcache: allow to detect "pure topological case" for branchmap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51052
diff
changeset
|
100 CACHE_BRANCHMAP_DETECT_PURE_TOPO = b"branchmap-detect-pure-topo" |
47307
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
101 # Warm full manifest cache |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
102 CACHE_FULL_MANIFEST = b"full-manifest" |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
103 # Warm file-node-tags cache |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
104 CACHE_FILE_NODE_TAGS = b"file-node-tags" |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
105 # Warm internal manifestlog cache (eg: persistent nodemap) |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
106 CACHE_MANIFESTLOG_CACHE = b"manifestlog-cache" |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
107 # Warn rev branch cache |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
108 CACHE_REV_BRANCH = b"rev-branch-cache" |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
109 # Warm tags' cache for default repoview' |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
110 CACHE_TAGS_DEFAULT = b"tags-default" |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
111 # Warm tags' cache for repoview's filter-level used by server |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
112 CACHE_TAGS_SERVED = b"tags-served" |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
113 |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
114 # the cache to warm by default after a simple transaction |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
115 # (this is a mutable set to let extension update it) |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
116 CACHES_DEFAULT = { |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
117 CACHE_BRANCHMAP_SERVED, |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
118 } |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
119 |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
120 # the caches to warm when warming all of them |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
121 # (this is a mutable set to let extension update it) |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
122 CACHES_ALL = { |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
123 CACHE_BRANCHMAP_SERVED, |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
124 CACHE_BRANCHMAP_ALL, |
51579
4a8bb136ee77
branchcache: allow to detect "pure topological case" for branchmap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51052
diff
changeset
|
125 CACHE_BRANCHMAP_DETECT_PURE_TOPO, |
51946
e51161b12c7e
rev-branch-cache: have debugupdatecache warm rbc too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51909
diff
changeset
|
126 CACHE_REV_BRANCH, |
47307
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
127 CACHE_CHANGELOG_CACHE, |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
128 CACHE_FILE_NODE_TAGS, |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
129 CACHE_FULL_MANIFEST, |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
130 CACHE_MANIFESTLOG_CACHE, |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
131 CACHE_TAGS_DEFAULT, |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
132 CACHE_TAGS_SERVED, |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
133 } |
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
134 |
47310
7edaf91c7886
updatecaches: use the `caches` argument instead of a special `full` value
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47307
diff
changeset
|
135 # the cache to warm by default on simple call |
7edaf91c7886
updatecaches: use the `caches` argument instead of a special `full` value
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47307
diff
changeset
|
136 # (this is a mutable set to let extension update it) |
7edaf91c7886
updatecaches: use the `caches` argument instead of a special `full` value
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47307
diff
changeset
|
137 CACHES_POST_CLONE = CACHES_ALL.copy() |
7edaf91c7886
updatecaches: use the `caches` argument instead of a special `full` value
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47307
diff
changeset
|
138 CACHES_POST_CLONE.discard(CACHE_FILE_NODE_TAGS) |
52211
d57d1606049c
clone: properly exclude rev-branch-cache from post clone cache warming
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51946
diff
changeset
|
139 CACHES_POST_CLONE.discard(CACHE_REV_BRANCH) |
47310
7edaf91c7886
updatecaches: use the `caches` argument instead of a special `full` value
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47307
diff
changeset
|
140 |
47307
d1589957fdcb
updatecaches: introduce a set of constants to control which are updated
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47237
diff
changeset
|
141 |
52493
73a46cef57c9
interfaces: rename `repository.ipeerconnection` to reflect it being private
Matt Harbison <matt_harbison@yahoo.com>
parents:
52492
diff
changeset
|
142 class _ipeerconnection(Protocol): |
33821
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
143 """Represents a "connection" to a repository. |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
144 |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
145 This is the base interface for representing a connection to a repository. |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
146 It holds basic properties and methods applicable to all peer types. |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
147 |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
148 This is not a complete interface definition and should not be used |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
149 outside of this module. |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
150 """ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
151 |
52492
0cfcc276b796
interfaces: convert `repository.ipeerconnection` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52491
diff
changeset
|
152 ui: Ui |
0cfcc276b796
interfaces: convert `repository.ipeerconnection` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52491
diff
changeset
|
153 """ui.ui instance""" |
0cfcc276b796
interfaces: convert `repository.ipeerconnection` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52491
diff
changeset
|
154 |
0cfcc276b796
interfaces: convert `repository.ipeerconnection` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52491
diff
changeset
|
155 path: urlutil.path | None |
0cfcc276b796
interfaces: convert `repository.ipeerconnection` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52491
diff
changeset
|
156 """a urlutil.path instance or None""" |
33821
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
157 |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
158 def url(self): |
33821
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
159 """Returns a URL string representing this peer. |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
160 |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
161 Currently, implementations expose the raw URL used to construct the |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
162 instance. It may contain credentials as part of the URL. The |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
163 expectations of the value aren't well-defined and this could lead to |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
164 data leakage. |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
165 |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
166 TODO audit/clean consumers and more clearly define the contents of this |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
167 value. |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
168 """ |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
169 |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
170 def local(self): |
33821
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
171 """Returns a local repository instance. |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
172 |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
173 If the peer represents a local repository, returns an object that |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
174 can be used to interface with it. Otherwise returns ``None``. |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
175 """ |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
176 |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
177 def canpush(self): |
33821
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
178 """Returns a boolean indicating if this peer can be pushed to.""" |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
179 |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
180 def close(self): |
33821
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
181 """Close the connection to this peer. |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
182 |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
183 This is called when the peer will no longer be used. Resources |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
184 associated with the peer should be cleaned up. |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
185 """ |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
186 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
187 |
52474
26dd402c3497
interfaces: convert the repository zope interfaces to Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52463
diff
changeset
|
188 class ipeercapabilities(Protocol): |
37610
98861a2298b5
repository: split capabilities methods into separate interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37440
diff
changeset
|
189 """Peer sub-interface related to capabilities.""" |
98861a2298b5
repository: split capabilities methods into separate interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37440
diff
changeset
|
190 |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
191 def capable(self, name): |
37610
98861a2298b5
repository: split capabilities methods into separate interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37440
diff
changeset
|
192 """Determine support for a named capability. |
98861a2298b5
repository: split capabilities methods into separate interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37440
diff
changeset
|
193 |
98861a2298b5
repository: split capabilities methods into separate interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37440
diff
changeset
|
194 Returns ``False`` if capability not supported. |
98861a2298b5
repository: split capabilities methods into separate interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37440
diff
changeset
|
195 |
98861a2298b5
repository: split capabilities methods into separate interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37440
diff
changeset
|
196 Returns ``True`` if boolean capability is supported. Returns a string |
98861a2298b5
repository: split capabilities methods into separate interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37440
diff
changeset
|
197 if capability support is non-boolean. |
98861a2298b5
repository: split capabilities methods into separate interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37440
diff
changeset
|
198 |
98861a2298b5
repository: split capabilities methods into separate interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37440
diff
changeset
|
199 Capability strings may or may not map to wire protocol capabilities. |
98861a2298b5
repository: split capabilities methods into separate interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37440
diff
changeset
|
200 """ |
98861a2298b5
repository: split capabilities methods into separate interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37440
diff
changeset
|
201 |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
202 def requirecap(self, name, purpose): |
37610
98861a2298b5
repository: split capabilities methods into separate interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37440
diff
changeset
|
203 """Require a capability to be present. |
98861a2298b5
repository: split capabilities methods into separate interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37440
diff
changeset
|
204 |
98861a2298b5
repository: split capabilities methods into separate interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37440
diff
changeset
|
205 Raises a ``CapabilityError`` if the capability isn't present. |
98861a2298b5
repository: split capabilities methods into separate interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37440
diff
changeset
|
206 """ |
98861a2298b5
repository: split capabilities methods into separate interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37440
diff
changeset
|
207 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
208 |
52474
26dd402c3497
interfaces: convert the repository zope interfaces to Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52463
diff
changeset
|
209 class ipeercommands(Protocol): |
33822
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
210 """Client-side interface for communicating over the wire protocol. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
211 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
212 This interface is used as a gateway to the Mercurial wire protocol. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
213 methods commonly call wire protocol commands of the same name. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
214 """ |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
215 |
52526
61f70a6ab645
wirepeer: subclass new `repository.ipeer{,legacy}commands` Proctocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52525
diff
changeset
|
216 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
217 def branchmap(self): |
33822
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
218 """Obtain heads in named branches. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
219 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
220 Returns a dict mapping branch name to an iterable of nodes that are |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
221 heads on that branch. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
222 """ |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
223 |
52526
61f70a6ab645
wirepeer: subclass new `repository.ipeer{,legacy}commands` Proctocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52525
diff
changeset
|
224 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
225 def capabilities(self): |
33822
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
226 """Obtain capabilities of the peer. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
227 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
228 Returns a set of string capabilities. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
229 """ |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
230 |
52526
61f70a6ab645
wirepeer: subclass new `repository.ipeer{,legacy}commands` Proctocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52525
diff
changeset
|
231 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
232 def get_cached_bundle_inline(self, path): |
50699
2aaabd8f4471
clone-bundle: rename the methods and wireprotole command
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50675
diff
changeset
|
233 """Retrieve a clonebundle across the wire. |
50675
60f9602b413e
clonebundles: add support for inline (streaming) clonebundles
Mathias De Mare <mathias.de_mare@nokia.com>
parents:
50667
diff
changeset
|
234 |
60f9602b413e
clonebundles: add support for inline (streaming) clonebundles
Mathias De Mare <mathias.de_mare@nokia.com>
parents:
50667
diff
changeset
|
235 Returns a chunkbuffer |
60f9602b413e
clonebundles: add support for inline (streaming) clonebundles
Mathias De Mare <mathias.de_mare@nokia.com>
parents:
50667
diff
changeset
|
236 """ |
60f9602b413e
clonebundles: add support for inline (streaming) clonebundles
Mathias De Mare <mathias.de_mare@nokia.com>
parents:
50667
diff
changeset
|
237 |
52526
61f70a6ab645
wirepeer: subclass new `repository.ipeer{,legacy}commands` Proctocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52525
diff
changeset
|
238 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
239 def clonebundles(self): |
37649
a168799687e5
wireproto: properly call clonebundles command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37635
diff
changeset
|
240 """Obtains the clone bundles manifest for the repo. |
a168799687e5
wireproto: properly call clonebundles command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37635
diff
changeset
|
241 |
a168799687e5
wireproto: properly call clonebundles command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37635
diff
changeset
|
242 Returns the manifest as unparsed bytes. |
a168799687e5
wireproto: properly call clonebundles command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37635
diff
changeset
|
243 """ |
a168799687e5
wireproto: properly call clonebundles command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37635
diff
changeset
|
244 |
52526
61f70a6ab645
wirepeer: subclass new `repository.ipeer{,legacy}commands` Proctocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52525
diff
changeset
|
245 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
246 def debugwireargs(self, one, two, three=None, four=None, five=None): |
33822
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
247 """Used to facilitate debugging of arguments passed over the wire.""" |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
248 |
52526
61f70a6ab645
wirepeer: subclass new `repository.ipeer{,legacy}commands` Proctocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52525
diff
changeset
|
249 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
250 def getbundle(self, source, **kwargs): |
33822
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
251 """Obtain remote repository data as a bundle. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
252 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
253 This command is how the bulk of repository data is transferred from |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
254 the peer to the local repository |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
255 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
256 Returns a generator of bundle data. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
257 """ |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
258 |
52526
61f70a6ab645
wirepeer: subclass new `repository.ipeer{,legacy}commands` Proctocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52525
diff
changeset
|
259 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
260 def heads(self): |
33822
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
261 """Determine all known head revisions in the peer. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
262 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
263 Returns an iterable of binary nodes. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
264 """ |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
265 |
52526
61f70a6ab645
wirepeer: subclass new `repository.ipeer{,legacy}commands` Proctocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52525
diff
changeset
|
266 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
267 def known(self, nodes): |
33822
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
268 """Determine whether multiple nodes are known. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
269 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
270 Accepts an iterable of nodes whose presence to check for. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
271 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
272 Returns an iterable of booleans indicating of the corresponding node |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
273 at that index is known to the peer. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
274 """ |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
275 |
52526
61f70a6ab645
wirepeer: subclass new `repository.ipeer{,legacy}commands` Proctocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52525
diff
changeset
|
276 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
277 def listkeys(self, namespace): |
33822
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
278 """Obtain all keys in a pushkey namespace. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
279 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
280 Returns an iterable of key names. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
281 """ |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
282 |
52526
61f70a6ab645
wirepeer: subclass new `repository.ipeer{,legacy}commands` Proctocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52525
diff
changeset
|
283 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
284 def lookup(self, key): |
33822
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
285 """Resolve a value to a known revision. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
286 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
287 Returns a binary node of the resolved revision on success. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
288 """ |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
289 |
52526
61f70a6ab645
wirepeer: subclass new `repository.ipeer{,legacy}commands` Proctocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52525
diff
changeset
|
290 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
291 def pushkey(self, namespace, key, old, new): |
33822
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
292 """Set a value using the ``pushkey`` protocol. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
293 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
294 Arguments correspond to the pushkey namespace and key to operate on and |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
295 the old and new values for that key. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
296 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
297 Returns a string with the peer result. The value inside varies by the |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
298 namespace. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
299 """ |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
300 |
52526
61f70a6ab645
wirepeer: subclass new `repository.ipeer{,legacy}commands` Proctocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52525
diff
changeset
|
301 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
302 def stream_out(self): |
33822
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
303 """Obtain streaming clone data. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
304 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
305 Successful result should be a generator of data chunks. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
306 """ |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
307 |
52526
61f70a6ab645
wirepeer: subclass new `repository.ipeer{,legacy}commands` Proctocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52525
diff
changeset
|
308 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
309 def unbundle(self, bundle, heads, url): |
33822
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
310 """Transfer repository data to the peer. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
311 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
312 This is how the bulk of data during a push is transferred. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
313 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
314 Returns the integer number of heads added to the peer. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
315 """ |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
316 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
317 |
52474
26dd402c3497
interfaces: convert the repository zope interfaces to Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52463
diff
changeset
|
318 class ipeerlegacycommands(Protocol): |
33822
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
319 """Interface for implementing support for legacy wire protocol commands. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
320 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
321 Wire protocol commands transition to legacy status when they are no longer |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
322 used by modern clients. To facilitate identifying which commands are |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
323 legacy, the interfaces are split. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
324 """ |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
325 |
52526
61f70a6ab645
wirepeer: subclass new `repository.ipeer{,legacy}commands` Proctocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52525
diff
changeset
|
326 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
327 def between(self, pairs): |
33822
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
328 """Obtain nodes between pairs of nodes. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
329 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
330 ``pairs`` is an iterable of node pairs. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
331 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
332 Returns an iterable of iterables of nodes corresponding to each |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
333 requested pair. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
334 """ |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
335 |
52526
61f70a6ab645
wirepeer: subclass new `repository.ipeer{,legacy}commands` Proctocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52525
diff
changeset
|
336 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
337 def branches(self, nodes): |
33822
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
338 """Obtain ancestor changesets of specific nodes back to a branch point. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
339 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
340 For each requested node, the peer finds the first ancestor node that is |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
341 a DAG root or is a merge. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
342 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
343 Returns an iterable of iterables with the resolved values for each node. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
344 """ |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
345 |
52526
61f70a6ab645
wirepeer: subclass new `repository.ipeer{,legacy}commands` Proctocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52525
diff
changeset
|
346 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
347 def changegroup(self, nodes, source): |
33822
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
348 """Obtain a changegroup with data for descendants of specified nodes.""" |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
349 |
52526
61f70a6ab645
wirepeer: subclass new `repository.ipeer{,legacy}commands` Proctocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52525
diff
changeset
|
350 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
351 def changegroupsubset(self, bases, heads, source): |
33822
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
352 pass |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
353 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
354 |
52474
26dd402c3497
interfaces: convert the repository zope interfaces to Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52463
diff
changeset
|
355 class ipeercommandexecutor(Protocol): |
37629
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
356 """Represents a mechanism to execute remote commands. |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
357 |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
358 This is the primary interface for requesting that wire protocol commands |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
359 be executed. Instances of this interface are active in a context manager |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
360 and have a well-defined lifetime. When the context manager exits, all |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
361 outstanding requests are waited on. |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
362 """ |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
363 |
52525
e123c8a26a70
localrepo: subclass the new `repository.ipeercommandexecutor` Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52522
diff
changeset
|
364 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
365 def callcommand(self, name, args): |
37629
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
366 """Request that a named command be executed. |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
367 |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
368 Receives the command name and a dictionary of command arguments. |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
369 |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
370 Returns a ``concurrent.futures.Future`` that will resolve to the |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
371 result of that command request. That exact value is left up to |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
372 the implementation and possibly varies by command. |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
373 |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
374 Not all commands can coexist with other commands in an executor |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
375 instance: it depends on the underlying wire protocol transport being |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
376 used and the command itself. |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
377 |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
378 Implementations MAY call ``sendcommands()`` automatically if the |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
379 requested command can not coexist with other commands in this executor. |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
380 |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
381 Implementations MAY call ``sendcommands()`` automatically when the |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
382 future's ``result()`` is called. So, consumers using multiple |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
383 commands with an executor MUST ensure that ``result()`` is not called |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
384 until all command requests have been issued. |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
385 """ |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
386 |
52525
e123c8a26a70
localrepo: subclass the new `repository.ipeercommandexecutor` Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52522
diff
changeset
|
387 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
388 def sendcommands(self): |
37629
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
389 """Trigger submission of queued command requests. |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
390 |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
391 Not all transports submit commands as soon as they are requested to |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
392 run. When called, this method forces queued command requests to be |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
393 issued. It will no-op if all commands have already been sent. |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
394 |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
395 When called, no more new commands may be issued with this executor. |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
396 """ |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
397 |
52525
e123c8a26a70
localrepo: subclass the new `repository.ipeercommandexecutor` Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52522
diff
changeset
|
398 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
399 def close(self): |
37629
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
400 """Signal that this command request is finished. |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
401 |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
402 When called, no more new commands may be issued. All outstanding |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
403 commands that have previously been issued are waited on before |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
404 returning. This not only includes waiting for the futures to resolve, |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
405 but also waiting for all response data to arrive. In other words, |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
406 calling this waits for all on-wire state for issued command requests |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
407 to finish. |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
408 |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
409 When used as a context manager, this method is called when exiting the |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
410 context manager. |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
411 |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
412 This method may call ``sendcommands()`` if there are buffered commands. |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
413 """ |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
414 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
415 |
52474
26dd402c3497
interfaces: convert the repository zope interfaces to Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52463
diff
changeset
|
416 class ipeerrequests(Protocol): |
37629
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
417 """Interface for executing commands on a peer.""" |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
418 |
52494
4cc186255672
interfaces: convert `repository.ipeerrequests` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52493
diff
changeset
|
419 limitedarguments: bool |
4cc186255672
interfaces: convert `repository.ipeerrequests` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52493
diff
changeset
|
420 """True if the peer cannot receive large argument value for commands.""" |
42200
69921d02daaf
peer: introduce a limitedarguments attributes
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41340
diff
changeset
|
421 |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
422 def commandexecutor(self): |
37629
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
423 """A context manager that resolves to an ipeercommandexecutor. |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
424 |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
425 The object this resolves to can be used to issue command requests |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
426 to the peer. |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
427 |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
428 Callers should call its ``callcommand`` method to issue command |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
429 requests. |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
430 |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
431 A new executor should be obtained for each distinct set of commands |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
432 (possibly just a single command) that the consumer wants to execute |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
433 as part of a single operation or round trip. This is because some |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
434 peers are half-duplex and/or don't support persistent connections. |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
435 e.g. in the case of HTTP peers, commands sent to an executor represent |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
436 a single HTTP request. While some peers may support multiple command |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
437 sends over the wire per executor, consumers need to code to the least |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
438 capable peer. So it should be assumed that command executors buffer |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
439 called commands until they are told to send them and that each |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
440 command executor could result in a new connection or wire-level request |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
441 being issued. |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
442 """ |
fa0382088993
repository: define new interface for running commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37610
diff
changeset
|
443 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
444 |
52495
1df97507c6b8
interfaces: convert `repository.peer` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52494
diff
changeset
|
445 class peer(_ipeerconnection, ipeercapabilities, ipeerrequests, Protocol): |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
446 """Unified interface for peer repositories. |
33821
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
447 |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
448 All peer instances must conform to this interface. |
33821
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
449 """ |
33822
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33821
diff
changeset
|
450 |
52495
1df97507c6b8
interfaces: convert `repository.peer` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52494
diff
changeset
|
451 limitedarguments: bool = False |
42200
69921d02daaf
peer: introduce a limitedarguments attributes
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41340
diff
changeset
|
452 |
50474
3a2df812e1c7
pull: add --remote-hidden option and pass it through peer creation
Manuel Jacob <me@manueljacob.de>
parents:
50323
diff
changeset
|
453 def __init__(self, ui, path=None, remotehidden=False): |
49863
a6e2a668c746
peer: have a common constructor and use it
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49860
diff
changeset
|
454 self.ui = ui |
49864
611ccb631cbc
peer: add a `path` attribute to peer
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49863
diff
changeset
|
455 self.path = path |
49863
a6e2a668c746
peer: have a common constructor and use it
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49860
diff
changeset
|
456 |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
457 def capable(self, name): |
52463
b2821a846470
tests: enable pytype checking on `mercurial/interfaces` package
Matt Harbison <matt_harbison@yahoo.com>
parents:
52211
diff
changeset
|
458 # TODO: this class should maybe subclass ipeercommands too, otherwise it |
b2821a846470
tests: enable pytype checking on `mercurial/interfaces` package
Matt Harbison <matt_harbison@yahoo.com>
parents:
52211
diff
changeset
|
459 # is assuming whatever uses this as a mixin also has this interface. |
b2821a846470
tests: enable pytype checking on `mercurial/interfaces` package
Matt Harbison <matt_harbison@yahoo.com>
parents:
52211
diff
changeset
|
460 caps = self.capabilities() # pytype: disable=attribute-error |
33823
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33822
diff
changeset
|
461 if name in caps: |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33822
diff
changeset
|
462 return True |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33822
diff
changeset
|
463 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
464 name = b'%s=' % name |
33823
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33822
diff
changeset
|
465 for cap in caps: |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33822
diff
changeset
|
466 if cap.startswith(name): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
467 return cap[len(name) :] |
33823
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33822
diff
changeset
|
468 |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33822
diff
changeset
|
469 return False |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33822
diff
changeset
|
470 |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33822
diff
changeset
|
471 def requirecap(self, name, purpose): |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33822
diff
changeset
|
472 if self.capable(name): |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33822
diff
changeset
|
473 return |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33822
diff
changeset
|
474 |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33822
diff
changeset
|
475 raise error.CapabilityError( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
476 _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
477 b'cannot %s; remote repository does not support the ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
478 b'\'%s\' capability' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
479 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
480 % (purpose, name) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
481 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
482 |
33823
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33822
diff
changeset
|
483 |
52474
26dd402c3497
interfaces: convert the repository zope interfaces to Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52463
diff
changeset
|
484 class iverifyproblem(Protocol): |
39847
97986c9c69d3
verify: start to abstract file verification
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39801
diff
changeset
|
485 """Represents a problem with the integrity of the repository. |
97986c9c69d3
verify: start to abstract file verification
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39801
diff
changeset
|
486 |
97986c9c69d3
verify: start to abstract file verification
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39801
diff
changeset
|
487 Instances of this interface are emitted to describe an integrity issue |
97986c9c69d3
verify: start to abstract file verification
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39801
diff
changeset
|
488 with a repository (e.g. corrupt storage, missing data, etc). |
97986c9c69d3
verify: start to abstract file verification
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39801
diff
changeset
|
489 |
97986c9c69d3
verify: start to abstract file verification
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39801
diff
changeset
|
490 Instances are essentially messages associated with severity. |
97986c9c69d3
verify: start to abstract file verification
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39801
diff
changeset
|
491 """ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
492 |
52496
f968926a4207
interfaces: convert `repository.iverifyproblem` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52495
diff
changeset
|
493 warning: bytes | None |
f968926a4207
interfaces: convert `repository.iverifyproblem` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52495
diff
changeset
|
494 """Message indicating a non-fatal problem.""" |
f968926a4207
interfaces: convert `repository.iverifyproblem` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52495
diff
changeset
|
495 |
f968926a4207
interfaces: convert `repository.iverifyproblem` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52495
diff
changeset
|
496 error: bytes | None |
f968926a4207
interfaces: convert `repository.iverifyproblem` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52495
diff
changeset
|
497 """Message indicating a fatal problem.""" |
f968926a4207
interfaces: convert `repository.iverifyproblem` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52495
diff
changeset
|
498 |
f968926a4207
interfaces: convert `repository.iverifyproblem` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52495
diff
changeset
|
499 node: bytes | None |
f968926a4207
interfaces: convert `repository.iverifyproblem` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52495
diff
changeset
|
500 """Revision encountering the problem. |
f968926a4207
interfaces: convert `repository.iverifyproblem` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52495
diff
changeset
|
501 |
f968926a4207
interfaces: convert `repository.iverifyproblem` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52495
diff
changeset
|
502 ``None`` means the problem doesn't apply to a single revision. |
f968926a4207
interfaces: convert `repository.iverifyproblem` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52495
diff
changeset
|
503 """ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
504 |
39877
733db72f0f54
revlog: move revision verification out of verify
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39874
diff
changeset
|
505 |
52474
26dd402c3497
interfaces: convert the repository zope interfaces to Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52463
diff
changeset
|
506 class irevisiondelta(Protocol): |
39258
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38874
diff
changeset
|
507 """Represents a delta between one revision and another. |
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38874
diff
changeset
|
508 |
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38874
diff
changeset
|
509 Instances convey enough information to allow a revision to be exchanged |
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38874
diff
changeset
|
510 with another repository. |
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38874
diff
changeset
|
511 |
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38874
diff
changeset
|
512 Instances represent the fulltext revision data or a delta against |
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38874
diff
changeset
|
513 another revision. Therefore the ``revision`` and ``delta`` attributes |
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38874
diff
changeset
|
514 are mutually exclusive. |
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38874
diff
changeset
|
515 |
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38874
diff
changeset
|
516 Typically used for changegroup generation. |
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38874
diff
changeset
|
517 """ |
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38874
diff
changeset
|
518 |
52498
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
519 node: bytes |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
520 """20 byte node of this revision.""" |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
521 |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
522 p1node: bytes |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
523 """20 byte node of 1st parent of this revision.""" |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
524 |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
525 p2node: bytes |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
526 """20 byte node of 2nd parent of this revision.""" |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
527 |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
528 # TODO: is this really optional? revlog.revlogrevisiondelta defaults to None |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
529 linknode: bytes | None |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
530 """20 byte node of the changelog revision this node is linked to.""" |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
531 |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
532 flags: int |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
533 """2 bytes of integer flags that apply to this revision. |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
534 |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
535 This is a bitwise composition of the ``REVISION_FLAG_*`` constants. |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
536 """ |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
537 |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
538 basenode: bytes |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
539 """20 byte node of the revision this data is a delta against. |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
540 |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
541 ``nullid`` indicates that the revision is a full revision and not |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
542 a delta. |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
543 """ |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
544 |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
545 baserevisionsize: int | None |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
546 """Size of base revision this delta is against. |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
547 |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
548 May be ``None`` if ``basenode`` is ``nullid``. |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
549 """ |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
550 |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
551 # TODO: is this really optional? (Seems possible in |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
552 # storageutil.emitrevisions()). |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
553 revision: bytes | None |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
554 """Raw fulltext of revision data for this node.""" |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
555 |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
556 delta: bytes | None |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
557 """Delta between ``basenode`` and ``node``. |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
558 |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
559 Stored in the bdiff delta format. |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
560 """ |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
561 |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
562 sidedata: bytes | None |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
563 """Raw sidedata bytes for the given revision.""" |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
564 |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
565 protocol_flags: int |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
566 """Single byte of integer flags that can influence the protocol. |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
567 |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
568 This is a bitwise composition of the ``storageutil.CG_FLAG*`` constants. |
2aada52e80d6
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52496
diff
changeset
|
569 """ |
47094
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46793
diff
changeset
|
570 |
39258
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38874
diff
changeset
|
571 |
52474
26dd402c3497
interfaces: convert the repository zope interfaces to Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52463
diff
changeset
|
572 class ifilerevisionssequence(Protocol): |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
573 """Contains index data for all revisions of a file. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
574 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
575 Types implementing this behave like lists of tuples. The index |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
576 in the list corresponds to the revision number. The values contain |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
577 index metadata. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
578 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
579 The *null* revision (revision number -1) is always the last item |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
580 in the index. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
581 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
582 |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
583 def __len__(self): |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
584 """The total number of revisions.""" |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
585 |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
586 def __getitem__(self, rev): |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
587 """Returns the object having a specific revision number. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
588 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
589 Returns an 8-tuple with the following fields: |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
590 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
591 offset+flags |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
592 Contains the offset and flags for the revision. 64-bit unsigned |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
593 integer where first 6 bytes are the offset and the next 2 bytes |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
594 are flags. The offset can be 0 if it is not used by the store. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
595 compressed size |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
596 Size of the revision data in the store. It can be 0 if it isn't |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
597 needed by the store. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
598 uncompressed size |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
599 Fulltext size. It can be 0 if it isn't needed by the store. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
600 base revision |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
601 Revision number of revision the delta for storage is encoded |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
602 against. -1 indicates not encoded against a base revision. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
603 link revision |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
604 Revision number of changelog revision this entry is related to. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
605 p1 revision |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
606 Revision number of 1st parent. -1 if no 1st parent. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
607 p2 revision |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
608 Revision number of 2nd parent. -1 if no 1st parent. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
609 node |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
610 Binary node value for this revision number. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
611 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
612 Negative values should index off the end of the sequence. ``-1`` |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
613 should return the null revision. ``-2`` should return the most |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
614 recent revision. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
615 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
616 |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
617 def __contains__(self, rev): |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
618 """Whether a revision number exists.""" |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
619 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
620 def insert(self, i, entry): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
621 """Add an item to the index at specific revision.""" |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
622 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
623 |
52474
26dd402c3497
interfaces: convert the repository zope interfaces to Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52463
diff
changeset
|
624 class ifileindex(Protocol): |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
625 """Storage interface for index data of a single file. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
626 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
627 File storage data is divided into index metadata and data storage. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
628 This interface defines the index portion of the interface. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
629 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
630 The index logically consists of: |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
631 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
632 * A mapping between revision numbers and nodes. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
633 * DAG data (storing and querying the relationship between nodes). |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
634 * Metadata to facilitate storage. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
635 """ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
636 |
52501
0d4ead4d88bd
interfaces: convert `repository.ifileindex` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52498
diff
changeset
|
637 nullid: bytes |
0d4ead4d88bd
interfaces: convert `repository.ifileindex` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52498
diff
changeset
|
638 """node for the null revision for use as delta base.""" |
46793
6266d19556ad
node: introduce nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46726
diff
changeset
|
639 |
52517
8c89e978375c
interfaces: convert `repository.ifilestorage` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52516
diff
changeset
|
640 @abc.abstractmethod |
52516
3daaa5195a30
typing: align the signatures of `repository.ifilestorage` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52515
diff
changeset
|
641 def __len__(self) -> int: |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
642 """Obtain the number of revisions stored for this file.""" |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
643 |
52517
8c89e978375c
interfaces: convert `repository.ifilestorage` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52516
diff
changeset
|
644 @abc.abstractmethod |
52516
3daaa5195a30
typing: align the signatures of `repository.ifilestorage` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52515
diff
changeset
|
645 def __iter__(self) -> Iterator[int]: |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
646 """Iterate over revision numbers for this file.""" |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
647 |
52517
8c89e978375c
interfaces: convert `repository.ifilestorage` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52516
diff
changeset
|
648 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
649 def hasnode(self, node): |
40387
f1a39128da95
filelog: add a hasnode() method (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40279
diff
changeset
|
650 """Returns a bool indicating if a node is known to this store. |
f1a39128da95
filelog: add a hasnode() method (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40279
diff
changeset
|
651 |
f1a39128da95
filelog: add a hasnode() method (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40279
diff
changeset
|
652 Implementations must only return True for full, binary node values: |
f1a39128da95
filelog: add a hasnode() method (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40279
diff
changeset
|
653 hex nodes, revision numbers, and partial node matches must be |
f1a39128da95
filelog: add a hasnode() method (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40279
diff
changeset
|
654 rejected. |
f1a39128da95
filelog: add a hasnode() method (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40279
diff
changeset
|
655 |
f1a39128da95
filelog: add a hasnode() method (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40279
diff
changeset
|
656 The null node is never present. |
f1a39128da95
filelog: add a hasnode() method (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40279
diff
changeset
|
657 """ |
f1a39128da95
filelog: add a hasnode() method (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40279
diff
changeset
|
658 |
52517
8c89e978375c
interfaces: convert `repository.ifilestorage` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52516
diff
changeset
|
659 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
660 def revs(self, start=0, stop=None): |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
661 """Iterate over revision numbers for this file, with control.""" |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
662 |
52517
8c89e978375c
interfaces: convert `repository.ifilestorage` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52516
diff
changeset
|
663 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
664 def parents(self, node): |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
665 """Returns a 2-tuple of parent nodes for a revision. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
666 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
667 Values will be ``nullid`` if the parent is empty. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
668 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
669 |
52517
8c89e978375c
interfaces: convert `repository.ifilestorage` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52516
diff
changeset
|
670 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
671 def parentrevs(self, rev): |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
672 """Like parents() but operates on revision numbers.""" |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
673 |
52517
8c89e978375c
interfaces: convert `repository.ifilestorage` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52516
diff
changeset
|
674 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
675 def rev(self, node): |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
676 """Obtain the revision number given a node. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
677 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
678 Raises ``error.LookupError`` if the node is not known. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
679 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
680 |
52517
8c89e978375c
interfaces: convert `repository.ifilestorage` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52516
diff
changeset
|
681 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
682 def node(self, rev): |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
683 """Obtain the node value given a revision number. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
684 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
685 Raises ``IndexError`` if the node is not known. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
686 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
687 |
52517
8c89e978375c
interfaces: convert `repository.ifilestorage` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52516
diff
changeset
|
688 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
689 def lookup(self, node): |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
690 """Attempt to resolve a value to a node. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
691 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
692 Value can be a binary node, hex node, revision number, or a string |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
693 that can be converted to an integer. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
694 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
695 Raises ``error.LookupError`` if a node could not be resolved. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
696 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
697 |
52517
8c89e978375c
interfaces: convert `repository.ifilestorage` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52516
diff
changeset
|
698 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
699 def linkrev(self, rev): |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
700 """Obtain the changeset revision number a revision is linked to.""" |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
701 |
52517
8c89e978375c
interfaces: convert `repository.ifilestorage` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52516
diff
changeset
|
702 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
703 def iscensored(self, rev): |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
704 """Return whether a revision's content has been censored.""" |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
705 |
52517
8c89e978375c
interfaces: convert `repository.ifilestorage` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52516
diff
changeset
|
706 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
707 def commonancestorsheads(self, node1, node2): |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
708 """Obtain an iterable of nodes containing heads of common ancestors. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
709 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
710 See ``ancestor.commonancestorsheads()``. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
711 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
712 |
52517
8c89e978375c
interfaces: convert `repository.ifilestorage` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52516
diff
changeset
|
713 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
714 def descendants(self, revs): |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
715 """Obtain descendant revision numbers for a set of revision numbers. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
716 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
717 If ``nullrev`` is in the set, this is equivalent to ``revs()``. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
718 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
719 |
52517
8c89e978375c
interfaces: convert `repository.ifilestorage` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52516
diff
changeset
|
720 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
721 def heads(self, start=None, stop=None): |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
722 """Obtain a list of nodes that are DAG heads, with control. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
723 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
724 The set of revisions examined can be limited by specifying |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
725 ``start`` and ``stop``. ``start`` is a node. ``stop`` is an |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
726 iterable of nodes. DAG traversal starts at earlier revision |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
727 ``start`` and iterates forward until any node in ``stop`` is |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
728 encountered. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
729 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
730 |
52517
8c89e978375c
interfaces: convert `repository.ifilestorage` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52516
diff
changeset
|
731 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
732 def children(self, node): |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
733 """Obtain nodes that are children of a node. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
734 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
735 Returns a list of nodes. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
736 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
737 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
738 |
52474
26dd402c3497
interfaces: convert the repository zope interfaces to Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52463
diff
changeset
|
739 class ifiledata(Protocol): |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
740 """Storage interface for data storage of a specific file. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
741 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
742 This complements ``ifileindex`` and provides an interface for accessing |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
743 data for a tracked file. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
744 """ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
745 |
52517
8c89e978375c
interfaces: convert `repository.ifilestorage` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52516
diff
changeset
|
746 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
747 def size(self, rev): |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
748 """Obtain the fulltext size of file data. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
749 |
39880
d909c44d29e1
filelog: stop proxying rawsize() (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39878
diff
changeset
|
750 Any metadata is excluded from size measurements. |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
751 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
752 |
52517
8c89e978375c
interfaces: convert `repository.ifilestorage` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52516
diff
changeset
|
753 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
754 def revision(self, node): |
45961
464539c305aa
formatting: drop a few extra double quotes in docstrings
Matt Harbison <matt_harbison@yahoo.com>
parents:
45957
diff
changeset
|
755 """Obtain fulltext data for a node. |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
756 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
757 By default, any storage transformations are applied before the data |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
758 is returned. If ``raw`` is True, non-raw storage transformations |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
759 are not applied. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
760 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
761 The fulltext data may contain a header containing metadata. Most |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
762 consumers should use ``read()`` to obtain the actual file data. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
763 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
764 |
52517
8c89e978375c
interfaces: convert `repository.ifilestorage` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52516
diff
changeset
|
765 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
766 def rawdata(self, node): |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45811
diff
changeset
|
767 """Obtain raw data for a node.""" |
42744
bbe71b5afd02
rawdata: register the method for `ifiledata`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42740
diff
changeset
|
768 |
52517
8c89e978375c
interfaces: convert `repository.ifilestorage` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52516
diff
changeset
|
769 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
770 def read(self, node): |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
771 """Resolve file fulltext data. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
772 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
773 This is similar to ``revision()`` except any metadata in the data |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
774 headers is stripped. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
775 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
776 |
52517
8c89e978375c
interfaces: convert `repository.ifilestorage` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52516
diff
changeset
|
777 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
778 def renamed(self, node): |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
779 """Obtain copy metadata for a node. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
780 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
781 Returns ``False`` if no copy metadata is stored or a 2-tuple of |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
782 (path, node) from which this revision was copied. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
783 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
784 |
52517
8c89e978375c
interfaces: convert `repository.ifilestorage` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52516
diff
changeset
|
785 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
786 def cmp(self, node, fulltext): |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
787 """Compare fulltext to another revision. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
788 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
789 Returns True if the fulltext is different from what is stored. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
790 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
791 This takes copy metadata into account. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
792 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
793 TODO better document the copy metadata and censoring logic. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
794 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
795 |
52517
8c89e978375c
interfaces: convert `repository.ifilestorage` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52516
diff
changeset
|
796 @abc.abstractmethod |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
797 def emitrevisions( |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
798 self, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
799 nodes, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
800 nodesorder=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
801 revisiondata=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
802 assumehaveparentrevisions=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
803 deltamode=CG_DELTAMODE_STD, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
804 ): |
39867
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
805 """Produce ``irevisiondelta`` for revisions. |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
806 |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
807 Given an iterable of nodes, emits objects conforming to the |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
808 ``irevisiondelta`` interface that describe revisions in storage. |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
809 |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
810 This method is a generator. |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
811 |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
812 The input nodes may be unordered. Implementations must ensure that a |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
813 node's parents are emitted before the node itself. Transitively, this |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
814 means that a node may only be emitted once all its ancestors in |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
815 ``nodes`` have also been emitted. |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
816 |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
817 By default, emits "index" data (the ``node``, ``p1node``, and |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
818 ``p2node`` attributes). If ``revisiondata`` is set, revision data |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
819 will also be present on the emitted objects. |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
820 |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
821 With default argument values, implementations can choose to emit |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
822 either fulltext revision data or a delta. When emitting deltas, |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
823 implementations must consider whether the delta's base revision |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
824 fulltext is available to the receiver. |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
825 |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
826 The base revision fulltext is guaranteed to be available if any of |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
827 the following are met: |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
828 |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
829 * Its fulltext revision was emitted by this method call. |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
830 * A delta for that revision was emitted by this method call. |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
831 * ``assumehaveparentrevisions`` is True and the base revision is a |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
832 parent of the node. |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
833 |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
834 ``nodesorder`` can be used to control the order that revisions are |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
835 emitted. By default, revisions can be reordered as long as they are |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
836 in DAG topological order (see above). If the value is ``nodes``, |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
837 the iteration order from ``nodes`` should be used. If the value is |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
838 ``storage``, then the native order from the backing storage layer |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
839 is used. (Not all storage layers will have strong ordering and behavior |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
840 of this mode is storage-dependent.) ``nodes`` ordering can force |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
841 revisions to be emitted before their ancestors, so consumers should |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
842 use it with care. |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
843 |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
844 The ``linknode`` attribute on the returned ``irevisiondelta`` may not |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
845 be set and it is the caller's responsibility to resolve it, if needed. |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
846 |
40496
6a917075535a
storage: also use `deltamode argument` for ifiledata
Boris Feld <boris.feld@octobus.net>
parents:
40495
diff
changeset
|
847 If ``deltamode`` is CG_DELTAMODE_PREV and revision data is requested, |
6a917075535a
storage: also use `deltamode argument` for ifiledata
Boris Feld <boris.feld@octobus.net>
parents:
40495
diff
changeset
|
848 all revision data should be emitted as deltas against the revision |
6a917075535a
storage: also use `deltamode argument` for ifiledata
Boris Feld <boris.feld@octobus.net>
parents:
40495
diff
changeset
|
849 emitted just prior. The initial revision should be a delta against its |
6a917075535a
storage: also use `deltamode argument` for ifiledata
Boris Feld <boris.feld@octobus.net>
parents:
40495
diff
changeset
|
850 1st parent. |
39867
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
851 """ |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
852 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
853 |
52474
26dd402c3497
interfaces: convert the repository zope interfaces to Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52463
diff
changeset
|
854 class ifilemutation(Protocol): |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
855 """Storage interface for mutation events of a tracked file.""" |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
856 |
52517
8c89e978375c
interfaces: convert `repository.ifilestorage` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52516
diff
changeset
|
857 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
858 def add(self, filedata, meta, transaction, linkrev, p1, p2): |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
859 """Add a new revision to the store. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
860 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
861 Takes file data, dictionary of metadata, a transaction, linkrev, |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
862 and parent nodes. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
863 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
864 Returns the node that was added. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
865 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
866 May no-op if a revision matching the supplied data is already stored. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
867 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
868 |
52517
8c89e978375c
interfaces: convert `repository.ifilestorage` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52516
diff
changeset
|
869 @abc.abstractmethod |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
870 def addrevision( |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
871 self, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
872 revisiondata, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
873 transaction, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
874 linkrev, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
875 p1, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
876 p2, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
877 node=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
878 flags=0, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
879 cachedelta=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
880 ): |
46560
f7b61ad3c64a
revlog: change addrevision to return the new revision, not node
Joerg Sonnenberger <joerg@bec.de>
parents:
46445
diff
changeset
|
881 """Add a new revision to the store and return its number. |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
882 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
883 This is similar to ``add()`` except it operates at a lower level. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
884 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
885 The data passed in already contains a metadata header, if any. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
886 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
887 ``node`` and ``flags`` can be used to define the expected node and |
40048
8e398628a3f2
repository: define and use revision flag constants
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40028
diff
changeset
|
888 the flags to use with storage. ``flags`` is a bitwise value composed |
8e398628a3f2
repository: define and use revision flag constants
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40028
diff
changeset
|
889 of the various ``REVISION_FLAG_*`` constants. |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
890 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
891 ``add()`` is usually called when adding files from e.g. the working |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
892 directory. ``addrevision()`` is often called by ``add()`` and for |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
893 scenarios where revision data has already been computed, such as when |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
894 applying raw data from a peer repo. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
895 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
896 |
52517
8c89e978375c
interfaces: convert `repository.ifilestorage` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52516
diff
changeset
|
897 @abc.abstractmethod |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
898 def addgroup( |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
899 self, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
900 deltas, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
901 linkmapper, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
902 transaction, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
903 addrevisioncb=None, |
45811
a5206e71c536
revlog: extend addgroup() with callback for duplicates
Joerg Sonnenberger <joerg@bec.de>
parents:
45671
diff
changeset
|
904 duplicaterevisioncb=None, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
905 maybemissingparents=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
906 ): |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
907 """Process a series of deltas for storage. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
908 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
909 ``deltas`` is an iterable of 7-tuples of |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
910 (node, p1, p2, linknode, deltabase, delta, flags) defining revisions |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
911 to add. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
912 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
913 The ``delta`` field contains ``mpatch`` data to apply to a base |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
914 revision, identified by ``deltabase``. The base node can be |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
915 ``nullid``, in which case the header from the delta can be ignored |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
916 and the delta used as the fulltext. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
917 |
46445
711ba0f1057e
revlog: decouple caching from addrevision callback for addgroup
Joerg Sonnenberger <joerg@bec.de>
parents:
46443
diff
changeset
|
918 ``alwayscache`` instructs the lower layers to cache the content of the |
711ba0f1057e
revlog: decouple caching from addrevision callback for addgroup
Joerg Sonnenberger <joerg@bec.de>
parents:
46443
diff
changeset
|
919 newly added revision, even if it needs to be explicitly computed. |
711ba0f1057e
revlog: decouple caching from addrevision callback for addgroup
Joerg Sonnenberger <joerg@bec.de>
parents:
46443
diff
changeset
|
920 This used to be the default when ``addrevisioncb`` was provided up to |
711ba0f1057e
revlog: decouple caching from addrevision callback for addgroup
Joerg Sonnenberger <joerg@bec.de>
parents:
46443
diff
changeset
|
921 Mercurial 5.8. |
711ba0f1057e
revlog: decouple caching from addrevision callback for addgroup
Joerg Sonnenberger <joerg@bec.de>
parents:
46443
diff
changeset
|
922 |
46561
7a93b7b3dc2d
revlog: change addgroup callbacks to take revision numbers
Joerg Sonnenberger <joerg@bec.de>
parents:
46560
diff
changeset
|
923 ``addrevisioncb`` should be called for each new rev as it is committed. |
7a93b7b3dc2d
revlog: change addgroup callbacks to take revision numbers
Joerg Sonnenberger <joerg@bec.de>
parents:
46560
diff
changeset
|
924 ``duplicaterevisioncb`` should be called for all revs with a |
7a93b7b3dc2d
revlog: change addgroup callbacks to take revision numbers
Joerg Sonnenberger <joerg@bec.de>
parents:
46560
diff
changeset
|
925 pre-existing node. |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
926 |
40389
1b183edbb68e
repository: teach addgroup() to receive data with missing parents
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40387
diff
changeset
|
927 ``maybemissingparents`` is a bool indicating whether the incoming |
1b183edbb68e
repository: teach addgroup() to receive data with missing parents
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40387
diff
changeset
|
928 data may reference parents/ancestor revisions that aren't present. |
1b183edbb68e
repository: teach addgroup() to receive data with missing parents
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40387
diff
changeset
|
929 This flag is set when receiving data into a "shallow" store that |
1b183edbb68e
repository: teach addgroup() to receive data with missing parents
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40387
diff
changeset
|
930 doesn't hold all history. |
1b183edbb68e
repository: teach addgroup() to receive data with missing parents
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40387
diff
changeset
|
931 |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
932 Returns a list of nodes that were processed. A node will be in the list |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
933 even if it existed in the store previously. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
934 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
935 |
52517
8c89e978375c
interfaces: convert `repository.ifilestorage` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52516
diff
changeset
|
936 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
937 def censorrevision(self, tr, node, tombstone=b''): |
39794
a6b3c4c1019f
revlog: move censor logic out of censor extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39792
diff
changeset
|
938 """Remove the content of a single revision. |
a6b3c4c1019f
revlog: move censor logic out of censor extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39792
diff
changeset
|
939 |
a6b3c4c1019f
revlog: move censor logic out of censor extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39792
diff
changeset
|
940 The specified ``node`` will have its content purged from storage. |
a6b3c4c1019f
revlog: move censor logic out of censor extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39792
diff
changeset
|
941 Future attempts to access the revision data for this node will |
a6b3c4c1019f
revlog: move censor logic out of censor extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39792
diff
changeset
|
942 result in failure. |
a6b3c4c1019f
revlog: move censor logic out of censor extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39792
diff
changeset
|
943 |
a6b3c4c1019f
revlog: move censor logic out of censor extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39792
diff
changeset
|
944 A ``tombstone`` message can optionally be stored. This message may be |
a6b3c4c1019f
revlog: move censor logic out of censor extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39792
diff
changeset
|
945 displayed to users when they attempt to access the missing revision |
a6b3c4c1019f
revlog: move censor logic out of censor extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39792
diff
changeset
|
946 data. |
a6b3c4c1019f
revlog: move censor logic out of censor extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39792
diff
changeset
|
947 |
a6b3c4c1019f
revlog: move censor logic out of censor extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39792
diff
changeset
|
948 Storage backends may have stored deltas against the previous content |
a6b3c4c1019f
revlog: move censor logic out of censor extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39792
diff
changeset
|
949 in this revision. As part of censoring a revision, these storage |
a6b3c4c1019f
revlog: move censor logic out of censor extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39792
diff
changeset
|
950 backends are expected to rewrite any internally stored deltas such |
a6b3c4c1019f
revlog: move censor logic out of censor extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39792
diff
changeset
|
951 that they no longer reference the deleted content. |
a6b3c4c1019f
revlog: move censor logic out of censor extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39792
diff
changeset
|
952 """ |
a6b3c4c1019f
revlog: move censor logic out of censor extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39792
diff
changeset
|
953 |
52517
8c89e978375c
interfaces: convert `repository.ifilestorage` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52516
diff
changeset
|
954 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
955 def getstrippoint(self, minlink): |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
956 """Find the minimum revision that must be stripped to strip a linkrev. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
957 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
958 Returns a 2-tuple containing the minimum revision number and a set |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
959 of all revisions numbers that would be broken by this strip. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
960 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
961 TODO this is highly revlog centric and should be abstracted into |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
962 a higher-level deletion API. ``repair.strip()`` relies on this. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
963 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
964 |
52517
8c89e978375c
interfaces: convert `repository.ifilestorage` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52516
diff
changeset
|
965 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
966 def strip(self, minlink, transaction): |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
967 """Remove storage of items starting at a linkrev. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
968 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
969 This uses ``getstrippoint()`` to determine the first node to remove. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
970 Then it effectively truncates storage for all revisions after that. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
971 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
972 TODO this is highly revlog centric and should be abstracted into a |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
973 higher-level deletion API. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
974 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
975 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
976 |
52517
8c89e978375c
interfaces: convert `repository.ifilestorage` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52516
diff
changeset
|
977 class ifilestorage(ifileindex, ifiledata, ifilemutation, Protocol): |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
978 """Complete storage interface for a single tracked file.""" |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
979 |
52517
8c89e978375c
interfaces: convert `repository.ifilestorage` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52516
diff
changeset
|
980 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
981 def files(self): |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
982 """Obtain paths that are backing storage for this file. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
983 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
984 TODO this is used heavily by verify code and there should probably |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
985 be a better API for that. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
986 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
987 |
52517
8c89e978375c
interfaces: convert `repository.ifilestorage` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52516
diff
changeset
|
988 @abc.abstractmethod |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
989 def storageinfo( |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
990 self, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
991 exclusivefiles=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
992 sharedfiles=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
993 revisionscount=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
994 trackedsize=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
995 storedsize=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
996 ): |
39874
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
997 """Obtain information about storage for this file's data. |
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
998 |
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
999 Returns a dict describing storage for this tracked path. The keys |
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
1000 in the dict map to arguments of the same. The arguments are bools |
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
1001 indicating whether to calculate and obtain that data. |
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
1002 |
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
1003 exclusivefiles |
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
1004 Iterable of (vfs, path) describing files that are exclusively |
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
1005 used to back storage for this tracked path. |
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
1006 |
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
1007 sharedfiles |
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
1008 Iterable of (vfs, path) describing files that are used to back |
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
1009 storage for this tracked path. Those files may also provide storage |
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
1010 for other stored entities. |
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
1011 |
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
1012 revisionscount |
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
1013 Number of revisions available for retrieval. |
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
1014 |
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
1015 trackedsize |
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
1016 Total size in bytes of all tracked revisions. This is a sum of the |
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
1017 length of the fulltext of all revisions. |
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
1018 |
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
1019 storedsize |
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
1020 Total size in bytes used to store data for all tracked revisions. |
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
1021 This is commonly less than ``trackedsize`` due to internal usage |
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
1022 of deltas rather than fulltext revisions. |
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
1023 |
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
1024 Not all storage backends may support all queries are have a reasonable |
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
1025 value to use. In that case, the value should be set to ``None`` and |
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
1026 callers are expected to handle this special value. |
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
1027 """ |
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
1028 |
52517
8c89e978375c
interfaces: convert `repository.ifilestorage` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52516
diff
changeset
|
1029 @abc.abstractmethod |
52516
3daaa5195a30
typing: align the signatures of `repository.ifilestorage` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52515
diff
changeset
|
1030 def verifyintegrity(self, state) -> Iterable[iverifyproblem]: |
39847
97986c9c69d3
verify: start to abstract file verification
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39801
diff
changeset
|
1031 """Verifies the integrity of file storage. |
97986c9c69d3
verify: start to abstract file verification
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39801
diff
changeset
|
1032 |
97986c9c69d3
verify: start to abstract file verification
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39801
diff
changeset
|
1033 ``state`` is a dict holding state of the verifier process. It can be |
97986c9c69d3
verify: start to abstract file verification
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39801
diff
changeset
|
1034 used to communicate data between invocations of multiple storage |
97986c9c69d3
verify: start to abstract file verification
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39801
diff
changeset
|
1035 primitives. |
97986c9c69d3
verify: start to abstract file verification
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39801
diff
changeset
|
1036 |
39877
733db72f0f54
revlog: move revision verification out of verify
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39874
diff
changeset
|
1037 If individual revisions cannot have their revision content resolved, |
733db72f0f54
revlog: move revision verification out of verify
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39874
diff
changeset
|
1038 the method is expected to set the ``skipread`` key to a set of nodes |
44073
b9e174d4ed11
verify: allow the storage to signal when renames can be tested on `skipread`
Matt Harbison <matt_harbison@yahoo.com>
parents:
43751
diff
changeset
|
1039 that encountered problems. If set, the method can also add the node(s) |
b9e174d4ed11
verify: allow the storage to signal when renames can be tested on `skipread`
Matt Harbison <matt_harbison@yahoo.com>
parents:
43751
diff
changeset
|
1040 to ``safe_renamed`` in order to indicate nodes that may perform the |
b9e174d4ed11
verify: allow the storage to signal when renames can be tested on `skipread`
Matt Harbison <matt_harbison@yahoo.com>
parents:
43751
diff
changeset
|
1041 rename checks with currently accessible data. |
39877
733db72f0f54
revlog: move revision verification out of verify
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39874
diff
changeset
|
1042 |
39847
97986c9c69d3
verify: start to abstract file verification
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39801
diff
changeset
|
1043 The method yields objects conforming to the ``iverifyproblem`` |
97986c9c69d3
verify: start to abstract file verification
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39801
diff
changeset
|
1044 interface. |
97986c9c69d3
verify: start to abstract file verification
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39801
diff
changeset
|
1045 """ |
97986c9c69d3
verify: start to abstract file verification
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39801
diff
changeset
|
1046 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
1047 |
52474
26dd402c3497
interfaces: convert the repository zope interfaces to Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52463
diff
changeset
|
1048 class idirs(Protocol): |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1049 """Interface representing a collection of directories from paths. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1050 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1051 This interface is essentially a derived data structure representing |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1052 directories from a collection of paths. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1053 """ |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1054 |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1055 def addpath(self, path): |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1056 """Add a path to the collection. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1057 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1058 All directories in the path will be added to the collection. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1059 """ |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1060 |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1061 def delpath(self, path): |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1062 """Remove a path from the collection. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1063 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1064 If the removal was the last path in a particular directory, the |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1065 directory is removed from the collection. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1066 """ |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1067 |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1068 def __iter__(self): |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1069 """Iterate over the directories in this collection of paths.""" |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1070 |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1071 def __contains__(self, path): |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1072 """Whether a specific directory is in this collection.""" |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1073 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
1074 |
52474
26dd402c3497
interfaces: convert the repository zope interfaces to Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52463
diff
changeset
|
1075 class imanifestdict(Protocol): |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1076 """Interface representing a manifest data structure. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1077 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1078 A manifest is effectively a dict mapping paths to entries. Each entry |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1079 consists of a binary node and extra flags affecting that entry. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1080 """ |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1081 |
52522
3913f9509476
interfaces: make `repository.imanifestdict` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52521
diff
changeset
|
1082 @abc.abstractmethod |
52521
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
1083 def __getitem__(self, key: bytes) -> bytes: |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1084 """Returns the binary node value for a path in the manifest. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1085 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1086 Raises ``KeyError`` if the path does not exist in the manifest. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1087 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1088 Equivalent to ``self.find(path)[0]``. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1089 """ |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1090 |
52522
3913f9509476
interfaces: make `repository.imanifestdict` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52521
diff
changeset
|
1091 @abc.abstractmethod |
52521
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
1092 def find(self, path: bytes) -> tuple[bytes, bytes]: |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1093 """Returns the entry for a path in the manifest. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1094 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1095 Returns a 2-tuple of (node, flags). |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1096 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1097 Raises ``KeyError`` if the path does not exist in the manifest. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1098 """ |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1099 |
52522
3913f9509476
interfaces: make `repository.imanifestdict` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52521
diff
changeset
|
1100 @abc.abstractmethod |
52521
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
1101 def __len__(self) -> int: |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1102 """Return the number of entries in the manifest.""" |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1103 |
52522
3913f9509476
interfaces: make `repository.imanifestdict` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52521
diff
changeset
|
1104 @abc.abstractmethod |
52521
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
1105 def __nonzero__(self) -> bool: |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1106 """Returns True if the manifest has entries, False otherwise.""" |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1107 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1108 __bool__ = __nonzero__ |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1109 |
52522
3913f9509476
interfaces: make `repository.imanifestdict` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52521
diff
changeset
|
1110 @abc.abstractmethod |
52521
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
1111 def set(self, path: bytes, node: bytes, flags: bytes) -> None: |
51812
421c9b3f2f4e
commit: set whole manifest entries at once (node with its associated flags)
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
51579
diff
changeset
|
1112 """Define the node value and flags for a path in the manifest. |
421c9b3f2f4e
commit: set whole manifest entries at once (node with its associated flags)
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
51579
diff
changeset
|
1113 |
421c9b3f2f4e
commit: set whole manifest entries at once (node with its associated flags)
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
51579
diff
changeset
|
1114 Equivalent to __setitem__ followed by setflag, but can be more efficient. |
421c9b3f2f4e
commit: set whole manifest entries at once (node with its associated flags)
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
51579
diff
changeset
|
1115 """ |
421c9b3f2f4e
commit: set whole manifest entries at once (node with its associated flags)
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
51579
diff
changeset
|
1116 |
52522
3913f9509476
interfaces: make `repository.imanifestdict` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52521
diff
changeset
|
1117 @abc.abstractmethod |
52521
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
1118 def __setitem__(self, path: bytes, node: bytes) -> None: |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1119 """Define the node value for a path in the manifest. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1120 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1121 If the path is already in the manifest, its flags will be copied to |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1122 the new entry. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1123 """ |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1124 |
52522
3913f9509476
interfaces: make `repository.imanifestdict` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52521
diff
changeset
|
1125 @abc.abstractmethod |
52521
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
1126 def __contains__(self, path: bytes) -> bool: |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1127 """Whether a path exists in the manifest.""" |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1128 |
52522
3913f9509476
interfaces: make `repository.imanifestdict` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52521
diff
changeset
|
1129 @abc.abstractmethod |
52521
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
1130 def __delitem__(self, path: bytes) -> None: |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1131 """Remove a path from the manifest. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1132 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1133 Raises ``KeyError`` if the path is not in the manifest. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1134 """ |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1135 |
52522
3913f9509476
interfaces: make `repository.imanifestdict` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52521
diff
changeset
|
1136 @abc.abstractmethod |
52521
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
1137 def __iter__(self) -> Iterator[bytes]: |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1138 """Iterate over paths in the manifest.""" |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1139 |
52522
3913f9509476
interfaces: make `repository.imanifestdict` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52521
diff
changeset
|
1140 @abc.abstractmethod |
52521
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
1141 def iterkeys(self) -> Iterator[bytes]: |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1142 """Iterate over paths in the manifest.""" |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1143 |
52522
3913f9509476
interfaces: make `repository.imanifestdict` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52521
diff
changeset
|
1144 @abc.abstractmethod |
52521
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
1145 def keys(self) -> list[bytes]: |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1146 """Obtain a list of paths in the manifest.""" |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1147 |
52522
3913f9509476
interfaces: make `repository.imanifestdict` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52521
diff
changeset
|
1148 @abc.abstractmethod |
52521
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
1149 def filesnotin(self, other, match=None) -> Set[bytes]: |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1150 """Obtain the set of paths in this manifest but not in another. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1151 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1152 ``match`` is an optional matcher function to be applied to both |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1153 manifests. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1154 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1155 Returns a set of paths. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1156 """ |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1157 |
52522
3913f9509476
interfaces: make `repository.imanifestdict` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52521
diff
changeset
|
1158 @abc.abstractmethod |
52521
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
1159 def dirs(self) -> pathutil.dirs: |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1160 """Returns an object implementing the ``idirs`` interface.""" |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1161 |
52522
3913f9509476
interfaces: make `repository.imanifestdict` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52521
diff
changeset
|
1162 @abc.abstractmethod |
52521
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
1163 def hasdir(self, dir: bytes) -> bool: |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1164 """Returns a bool indicating if a directory is in this manifest.""" |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1165 |
52522
3913f9509476
interfaces: make `repository.imanifestdict` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52521
diff
changeset
|
1166 @abc.abstractmethod |
52521
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
1167 def walk(self, match: matchmod.basematcher) -> Iterator[bytes]: |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1168 """Generator of paths in manifest satisfying a matcher. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1169 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1170 If the matcher has explicit files listed and they don't exist in |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1171 the manifest, ``match.bad()`` is called for each missing file. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1172 """ |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1173 |
52522
3913f9509476
interfaces: make `repository.imanifestdict` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52521
diff
changeset
|
1174 @abc.abstractmethod |
52521
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
1175 def diff( |
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
1176 self, |
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
1177 other: Any, # TODO: 'manifestdict' or (better) equivalent interface |
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
1178 match: matchmod.basematcher | None = None, |
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
1179 clean: bool = False, |
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
1180 ) -> dict[ |
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
1181 bytes, |
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
1182 tuple[tuple[bytes | None, bytes], tuple[bytes | None, bytes]] | None, |
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
1183 ]: |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1184 """Find differences between this manifest and another. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1185 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1186 This manifest is compared to ``other``. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1187 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1188 If ``match`` is provided, the two manifests are filtered against this |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1189 matcher and only entries satisfying the matcher are compared. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1190 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1191 If ``clean`` is True, unchanged files are included in the returned |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1192 object. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1193 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1194 Returns a dict with paths as keys and values of 2-tuples of 2-tuples of |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1195 the form ``((node1, flag1), (node2, flag2))`` where ``(node1, flag1)`` |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1196 represents the node and flags for this manifest and ``(node2, flag2)`` |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1197 are the same for the other manifest. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1198 """ |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1199 |
52522
3913f9509476
interfaces: make `repository.imanifestdict` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52521
diff
changeset
|
1200 @abc.abstractmethod |
52521
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
1201 def setflag(self, path: bytes, flag: bytes) -> None: |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1202 """Set the flag value for a given path. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1203 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1204 Raises ``KeyError`` if the path is not already in the manifest. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1205 """ |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1206 |
52522
3913f9509476
interfaces: make `repository.imanifestdict` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52521
diff
changeset
|
1207 @abc.abstractmethod |
52521
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
1208 def get(self, path: bytes, default=None) -> bytes | None: |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1209 """Obtain the node value for a path or a default value if missing.""" |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1210 |
52522
3913f9509476
interfaces: make `repository.imanifestdict` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52521
diff
changeset
|
1211 @abc.abstractmethod |
52521
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
1212 def flags(self, path: bytes) -> bytes: |
44304
dbbae122f5e4
manifest: remove optional default= argument on flags(path)
Augie Fackler <augie@google.com>
parents:
44073
diff
changeset
|
1213 """Return the flags value for a path (default: empty bytestring).""" |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1214 |
52522
3913f9509476
interfaces: make `repository.imanifestdict` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52521
diff
changeset
|
1215 @abc.abstractmethod |
52521
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
1216 def copy(self) -> 'imanifestdict': |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1217 """Return a copy of this manifest.""" |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1218 |
52522
3913f9509476
interfaces: make `repository.imanifestdict` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52521
diff
changeset
|
1219 @abc.abstractmethod |
52521
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
1220 def items(self) -> Iterator[tuple[bytes, bytes]]: |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1221 """Returns an iterable of (path, node) for items in this manifest.""" |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1222 |
52522
3913f9509476
interfaces: make `repository.imanifestdict` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52521
diff
changeset
|
1223 @abc.abstractmethod |
52521
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
1224 def iteritems(self) -> Iterator[tuple[bytes, bytes]]: |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1225 """Identical to items().""" |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1226 |
52522
3913f9509476
interfaces: make `repository.imanifestdict` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52521
diff
changeset
|
1227 @abc.abstractmethod |
52521
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
1228 def iterentries(self) -> Iterator[tuple[bytes, bytes, bytes]]: |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1229 """Returns an iterable of (path, node, flags) for this manifest. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1230 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1231 Similar to ``iteritems()`` except items are a 3-tuple and include |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1232 flags. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1233 """ |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1234 |
52522
3913f9509476
interfaces: make `repository.imanifestdict` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52521
diff
changeset
|
1235 @abc.abstractmethod |
52521
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
1236 def text(self) -> ByteString: |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1237 """Obtain the raw data representation for this manifest. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1238 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1239 Result is used to create a manifest revision. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1240 """ |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1241 |
52522
3913f9509476
interfaces: make `repository.imanifestdict` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52521
diff
changeset
|
1242 @abc.abstractmethod |
52521
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
1243 def fastdelta( |
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
1244 self, base: ByteString, changes: Iterable[tuple[bytes, bool]] |
48cdbd4d5443
typing: align the signatures of `repository.imanifestdict` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52519
diff
changeset
|
1245 ) -> tuple[ByteString, ByteString]: |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1246 """Obtain a delta between this manifest and another given changes. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1247 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1248 ``base`` in the raw data representation for another manifest. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1249 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1250 ``changes`` is an iterable of ``(path, to_delete)``. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1251 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1252 Returns a 2-tuple containing ``bytearray(self.text())`` and the |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1253 delta between ``base`` and this manifest. |
44665
948fac24bc39
manifest: introduce new exception to signal unavailability of fastdelta()
Augie Fackler <augie@google.com>
parents:
44386
diff
changeset
|
1254 |
948fac24bc39
manifest: introduce new exception to signal unavailability of fastdelta()
Augie Fackler <augie@google.com>
parents:
44386
diff
changeset
|
1255 If this manifest implementation can't support ``fastdelta()``, |
948fac24bc39
manifest: introduce new exception to signal unavailability of fastdelta()
Augie Fackler <augie@google.com>
parents:
44386
diff
changeset
|
1256 raise ``mercurial.manifest.FastdeltaUnavailable``. |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1257 """ |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1258 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
1259 |
52474
26dd402c3497
interfaces: convert the repository zope interfaces to Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52463
diff
changeset
|
1260 class imanifestrevisionbase(Protocol): |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1261 """Base interface representing a single revision of a manifest. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1262 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1263 Should not be used as a primary interface: should always be inherited |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1264 as part of a larger interface. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1265 """ |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1266 |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1267 def copy(self): |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1268 """Obtain a copy of this manifest instance. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1269 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1270 Returns an object conforming to the ``imanifestrevisionwritable`` |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1271 interface. The instance will be associated with the same |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1272 ``imanifestlog`` collection as this instance. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1273 """ |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1274 |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1275 def read(self): |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1276 """Obtain the parsed manifest data structure. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1277 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1278 The returned object conforms to the ``imanifestdict`` interface. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1279 """ |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1280 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
1281 |
52504
cdd4bc69bfc1
interfaces: convert `imanifestrevisionstored` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52503
diff
changeset
|
1282 class imanifestrevisionstored(imanifestrevisionbase, Protocol): |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1283 """Interface representing a manifest revision committed to storage.""" |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1284 |
52504
cdd4bc69bfc1
interfaces: convert `imanifestrevisionstored` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52503
diff
changeset
|
1285 @abc.abstractmethod |
52503
048c11993d6a
typing: (mostly) align the signatures of `imanifestrevisionstored` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52502
diff
changeset
|
1286 def node(self) -> bytes: |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1287 """The binary node for this manifest.""" |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1288 |
52502
a1dd484bf33b
interfaces: convert `imanifestrevisionstored` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52501
diff
changeset
|
1289 parents: list[bytes] |
a1dd484bf33b
interfaces: convert `imanifestrevisionstored` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52501
diff
changeset
|
1290 """List of binary nodes that are parents for this manifest revision.""" |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1291 |
52504
cdd4bc69bfc1
interfaces: convert `imanifestrevisionstored` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52503
diff
changeset
|
1292 @abc.abstractmethod |
52503
048c11993d6a
typing: (mostly) align the signatures of `imanifestrevisionstored` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52502
diff
changeset
|
1293 def readdelta(self, shallow: bool = False): |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1294 """Obtain the manifest data structure representing changes from parent. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1295 |
51827
ca4208713875
manifest: introduce a `read_any_fast_delta` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51812
diff
changeset
|
1296 This manifest is compared to its 1st parent. A new manifest |
ca4208713875
manifest: introduce a `read_any_fast_delta` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51812
diff
changeset
|
1297 representing those differences is constructed. |
ca4208713875
manifest: introduce a `read_any_fast_delta` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51812
diff
changeset
|
1298 |
ca4208713875
manifest: introduce a `read_any_fast_delta` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51812
diff
changeset
|
1299 If `shallow` is True, this will read the delta for this directory, |
ca4208713875
manifest: introduce a `read_any_fast_delta` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51812
diff
changeset
|
1300 without recursively reading subdirectory manifests. Instead, any |
ca4208713875
manifest: introduce a `read_any_fast_delta` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51812
diff
changeset
|
1301 subdirectory entry will be reported as it appears in the manifest, i.e. |
ca4208713875
manifest: introduce a `read_any_fast_delta` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51812
diff
changeset
|
1302 the subdirectory will be reported among files and distinguished only by |
ca4208713875
manifest: introduce a `read_any_fast_delta` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51812
diff
changeset
|
1303 its 't' flag. This only apply if the underlying manifest support it. |
ca4208713875
manifest: introduce a `read_any_fast_delta` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51812
diff
changeset
|
1304 |
ca4208713875
manifest: introduce a `read_any_fast_delta` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51812
diff
changeset
|
1305 The returned object conforms to the ``imanifestdict`` interface. |
ca4208713875
manifest: introduce a `read_any_fast_delta` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51812
diff
changeset
|
1306 """ |
ca4208713875
manifest: introduce a `read_any_fast_delta` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51812
diff
changeset
|
1307 |
52504
cdd4bc69bfc1
interfaces: convert `imanifestrevisionstored` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52503
diff
changeset
|
1308 @abc.abstractmethod |
52503
048c11993d6a
typing: (mostly) align the signatures of `imanifestrevisionstored` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52502
diff
changeset
|
1309 def read_any_fast_delta( |
048c11993d6a
typing: (mostly) align the signatures of `imanifestrevisionstored` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52502
diff
changeset
|
1310 self, |
048c11993d6a
typing: (mostly) align the signatures of `imanifestrevisionstored` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52502
diff
changeset
|
1311 valid_bases: Collection[int] | None = None, |
048c11993d6a
typing: (mostly) align the signatures of `imanifestrevisionstored` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52502
diff
changeset
|
1312 *, |
048c11993d6a
typing: (mostly) align the signatures of `imanifestrevisionstored` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52502
diff
changeset
|
1313 shallow: bool = False, |
048c11993d6a
typing: (mostly) align the signatures of `imanifestrevisionstored` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52502
diff
changeset
|
1314 ): |
51827
ca4208713875
manifest: introduce a `read_any_fast_delta` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51812
diff
changeset
|
1315 """read some manifest information as fast if possible |
ca4208713875
manifest: introduce a `read_any_fast_delta` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51812
diff
changeset
|
1316 |
ca4208713875
manifest: introduce a `read_any_fast_delta` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51812
diff
changeset
|
1317 This might return a "delta", a manifest object containing only file |
ca4208713875
manifest: introduce a `read_any_fast_delta` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51812
diff
changeset
|
1318 changed compared to another revisions. The `valid_bases` argument |
ca4208713875
manifest: introduce a `read_any_fast_delta` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51812
diff
changeset
|
1319 control the set of revision that might be used as a base. |
ca4208713875
manifest: introduce a `read_any_fast_delta` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51812
diff
changeset
|
1320 |
ca4208713875
manifest: introduce a `read_any_fast_delta` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51812
diff
changeset
|
1321 If no delta can be retrieved quickly, a full read of the manifest will |
ca4208713875
manifest: introduce a `read_any_fast_delta` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51812
diff
changeset
|
1322 be performed instead. |
ca4208713875
manifest: introduce a `read_any_fast_delta` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51812
diff
changeset
|
1323 |
ca4208713875
manifest: introduce a `read_any_fast_delta` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51812
diff
changeset
|
1324 The function return a tuple with two elements. The first one is the |
ca4208713875
manifest: introduce a `read_any_fast_delta` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51812
diff
changeset
|
1325 delta base used (or None if we did a full read), the second one is the |
ca4208713875
manifest: introduce a `read_any_fast_delta` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51812
diff
changeset
|
1326 manifest information. |
ca4208713875
manifest: introduce a `read_any_fast_delta` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51812
diff
changeset
|
1327 |
ca4208713875
manifest: introduce a `read_any_fast_delta` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51812
diff
changeset
|
1328 If `shallow` is True, this will read the delta for this directory, |
ca4208713875
manifest: introduce a `read_any_fast_delta` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51812
diff
changeset
|
1329 without recursively reading subdirectory manifests. Instead, any |
ca4208713875
manifest: introduce a `read_any_fast_delta` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51812
diff
changeset
|
1330 subdirectory entry will be reported as it appears in the manifest, i.e. |
ca4208713875
manifest: introduce a `read_any_fast_delta` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51812
diff
changeset
|
1331 the subdirectory will be reported among files and distinguished only by |
ca4208713875
manifest: introduce a `read_any_fast_delta` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51812
diff
changeset
|
1332 its 't' flag. This only apply if the underlying manifest support it. |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1333 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1334 The returned object conforms to the ``imanifestdict`` interface. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1335 """ |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1336 |
52504
cdd4bc69bfc1
interfaces: convert `imanifestrevisionstored` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52503
diff
changeset
|
1337 @abc.abstractmethod |
52503
048c11993d6a
typing: (mostly) align the signatures of `imanifestrevisionstored` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52502
diff
changeset
|
1338 def read_delta_parents(self, *, shallow: bool = False, exact: bool = True): |
51833
a891347058e7
manifest: introduce a `read_delta_parents` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51828
diff
changeset
|
1339 """return a diff from this revision against both parents. |
a891347058e7
manifest: introduce a `read_delta_parents` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51828
diff
changeset
|
1340 |
a891347058e7
manifest: introduce a `read_delta_parents` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51828
diff
changeset
|
1341 If `exact` is False, this might return a superset of the diff, containing |
a891347058e7
manifest: introduce a `read_delta_parents` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51828
diff
changeset
|
1342 files that are actually present as is in one of the parents. |
a891347058e7
manifest: introduce a `read_delta_parents` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51828
diff
changeset
|
1343 |
a891347058e7
manifest: introduce a `read_delta_parents` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51828
diff
changeset
|
1344 If `shallow` is True, this will read the delta for this directory, |
a891347058e7
manifest: introduce a `read_delta_parents` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51828
diff
changeset
|
1345 without recursively reading subdirectory manifests. Instead, any |
a891347058e7
manifest: introduce a `read_delta_parents` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51828
diff
changeset
|
1346 subdirectory entry will be reported as it appears in the manifest, i.e. |
a891347058e7
manifest: introduce a `read_delta_parents` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51828
diff
changeset
|
1347 the subdirectory will be reported among files and distinguished only by |
a891347058e7
manifest: introduce a `read_delta_parents` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51828
diff
changeset
|
1348 its 't' flag. This only apply if the underlying manifest support it. |
a891347058e7
manifest: introduce a `read_delta_parents` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51828
diff
changeset
|
1349 |
a891347058e7
manifest: introduce a `read_delta_parents` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51828
diff
changeset
|
1350 The returned object conforms to the ``imanifestdict`` interface.""" |
a891347058e7
manifest: introduce a `read_delta_parents` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51828
diff
changeset
|
1351 |
52504
cdd4bc69bfc1
interfaces: convert `imanifestrevisionstored` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52503
diff
changeset
|
1352 @abc.abstractmethod |
52503
048c11993d6a
typing: (mostly) align the signatures of `imanifestrevisionstored` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52502
diff
changeset
|
1353 def read_delta_new_entries(self, *, shallow: bool = False): |
51837
bcb825bf0c5e
manifest: add a read_delta_new_entries method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51833
diff
changeset
|
1354 """Return a manifest containing just the entries that might be new to |
bcb825bf0c5e
manifest: add a read_delta_new_entries method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51833
diff
changeset
|
1355 the repository. |
bcb825bf0c5e
manifest: add a read_delta_new_entries method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51833
diff
changeset
|
1356 |
bcb825bf0c5e
manifest: add a read_delta_new_entries method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51833
diff
changeset
|
1357 This is often equivalent to a diff against both parents, but without |
bcb825bf0c5e
manifest: add a read_delta_new_entries method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51833
diff
changeset
|
1358 garantee. For performance reason, It might contains more files in some cases. |
bcb825bf0c5e
manifest: add a read_delta_new_entries method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51833
diff
changeset
|
1359 |
bcb825bf0c5e
manifest: add a read_delta_new_entries method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51833
diff
changeset
|
1360 If `shallow` is True, this will read the delta for this directory, |
bcb825bf0c5e
manifest: add a read_delta_new_entries method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51833
diff
changeset
|
1361 without recursively reading subdirectory manifests. Instead, any |
bcb825bf0c5e
manifest: add a read_delta_new_entries method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51833
diff
changeset
|
1362 subdirectory entry will be reported as it appears in the manifest, i.e. |
bcb825bf0c5e
manifest: add a read_delta_new_entries method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51833
diff
changeset
|
1363 the subdirectory will be reported among files and distinguished only by |
bcb825bf0c5e
manifest: add a read_delta_new_entries method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51833
diff
changeset
|
1364 its 't' flag. This only apply if the underlying manifest support it. |
bcb825bf0c5e
manifest: add a read_delta_new_entries method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51833
diff
changeset
|
1365 |
bcb825bf0c5e
manifest: add a read_delta_new_entries method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51833
diff
changeset
|
1366 The returned object conforms to the ``imanifestdict`` interface.""" |
bcb825bf0c5e
manifest: add a read_delta_new_entries method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51833
diff
changeset
|
1367 |
52504
cdd4bc69bfc1
interfaces: convert `imanifestrevisionstored` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52503
diff
changeset
|
1368 @abc.abstractmethod |
52503
048c11993d6a
typing: (mostly) align the signatures of `imanifestrevisionstored` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52502
diff
changeset
|
1369 def readfast(self, shallow: bool = False): |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1370 """Calls either ``read()`` or ``readdelta()``. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1371 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1372 The faster of the two options is called. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1373 """ |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1374 |
52504
cdd4bc69bfc1
interfaces: convert `imanifestrevisionstored` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52503
diff
changeset
|
1375 @abc.abstractmethod |
52503
048c11993d6a
typing: (mostly) align the signatures of `imanifestrevisionstored` overrides
Matt Harbison <matt_harbison@yahoo.com>
parents:
52502
diff
changeset
|
1376 def find(self, key: bytes) -> tuple[bytes, bytes]: |
52505
0c60be5e021a
interfaces: fix a doc comment in `repository.imanifestrevisionstored.find()`
Matt Harbison <matt_harbison@yahoo.com>
parents:
52504
diff
changeset
|
1377 """Calls ``self.read().find(key)``. |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1378 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1379 Returns a 2-tuple of ``(node, flags)`` or raises ``KeyError``. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1380 """ |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1381 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
1382 |
52509
01818a59f463
interfaces: convert `imanifestrevisionwritable` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52508
diff
changeset
|
1383 class imanifestrevisionwritable(imanifestrevisionbase, Protocol): |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1384 """Interface representing a manifest revision that can be committed.""" |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1385 |
52509
01818a59f463
interfaces: convert `imanifestrevisionwritable` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52508
diff
changeset
|
1386 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1387 def write( |
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1388 self, transaction, linkrev, p1node, p2node, added, removed, match=None |
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1389 ): |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1390 """Add this revision to storage. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1391 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1392 Takes a transaction object, the changeset revision number it will |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1393 be associated with, its parent nodes, and lists of added and |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1394 removed paths. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1395 |
39684
24870f1be088
narrow: when writing treemanifests, skip inspecting directories outside narrow
spectral <spectral@google.com>
parents:
39342
diff
changeset
|
1396 If match is provided, storage can choose not to inspect or write out |
24870f1be088
narrow: when writing treemanifests, skip inspecting directories outside narrow
spectral <spectral@google.com>
parents:
39342
diff
changeset
|
1397 items that do not match. Storage is still required to be able to provide |
24870f1be088
narrow: when writing treemanifests, skip inspecting directories outside narrow
spectral <spectral@google.com>
parents:
39342
diff
changeset
|
1398 the full manifest in the future for any directories written (these |
24870f1be088
narrow: when writing treemanifests, skip inspecting directories outside narrow
spectral <spectral@google.com>
parents:
39342
diff
changeset
|
1399 manifests should not be "narrowed on disk"). |
24870f1be088
narrow: when writing treemanifests, skip inspecting directories outside narrow
spectral <spectral@google.com>
parents:
39342
diff
changeset
|
1400 |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1401 Returns the binary node of the created revision. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1402 """ |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1403 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
1404 |
52474
26dd402c3497
interfaces: convert the repository zope interfaces to Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52463
diff
changeset
|
1405 class imanifeststorage(Protocol): |
39341
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1406 """Storage interface for manifest data.""" |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1407 |
52507
d01af74e67b4
interfaces: convert `repository.imanifeststorage` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52505
diff
changeset
|
1408 nodeconstants: NodeConstants |
d01af74e67b4
interfaces: convert `repository.imanifeststorage` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52505
diff
changeset
|
1409 """nodeconstants used by the current repository.""" |
d01af74e67b4
interfaces: convert `repository.imanifeststorage` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52505
diff
changeset
|
1410 |
d01af74e67b4
interfaces: convert `repository.imanifeststorage` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52505
diff
changeset
|
1411 tree: bytes |
d01af74e67b4
interfaces: convert `repository.imanifeststorage` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52505
diff
changeset
|
1412 """The path to the directory this manifest tracks. |
d01af74e67b4
interfaces: convert `repository.imanifeststorage` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52505
diff
changeset
|
1413 |
d01af74e67b4
interfaces: convert `repository.imanifeststorage` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52505
diff
changeset
|
1414 The empty bytestring represents the root manifest. |
d01af74e67b4
interfaces: convert `repository.imanifeststorage` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52505
diff
changeset
|
1415 """ |
d01af74e67b4
interfaces: convert `repository.imanifeststorage` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52505
diff
changeset
|
1416 |
d01af74e67b4
interfaces: convert `repository.imanifeststorage` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52505
diff
changeset
|
1417 index: ifilerevisionssequence |
d01af74e67b4
interfaces: convert `repository.imanifeststorage` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52505
diff
changeset
|
1418 """An ``ifilerevisionssequence`` instance.""" |
d01af74e67b4
interfaces: convert `repository.imanifeststorage` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52505
diff
changeset
|
1419 |
d01af74e67b4
interfaces: convert `repository.imanifeststorage` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52505
diff
changeset
|
1420 opener: Vfs |
d01af74e67b4
interfaces: convert `repository.imanifeststorage` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52505
diff
changeset
|
1421 """VFS opener to use to access underlying files used for storage. |
d01af74e67b4
interfaces: convert `repository.imanifeststorage` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52505
diff
changeset
|
1422 |
d01af74e67b4
interfaces: convert `repository.imanifeststorage` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52505
diff
changeset
|
1423 TODO this is revlog specific and should not be exposed. |
d01af74e67b4
interfaces: convert `repository.imanifeststorage` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52505
diff
changeset
|
1424 """ |
d01af74e67b4
interfaces: convert `repository.imanifeststorage` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52505
diff
changeset
|
1425 |
d01af74e67b4
interfaces: convert `repository.imanifeststorage` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52505
diff
changeset
|
1426 # TODO: finish type hints |
d01af74e67b4
interfaces: convert `repository.imanifeststorage` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52505
diff
changeset
|
1427 fulltextcache: dict |
d01af74e67b4
interfaces: convert `repository.imanifeststorage` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52505
diff
changeset
|
1428 """Dict with cache of fulltexts. |
d01af74e67b4
interfaces: convert `repository.imanifeststorage` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52505
diff
changeset
|
1429 |
d01af74e67b4
interfaces: convert `repository.imanifeststorage` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52505
diff
changeset
|
1430 TODO this doesn't feel appropriate for the storage interface. |
d01af74e67b4
interfaces: convert `repository.imanifeststorage` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52505
diff
changeset
|
1431 """ |
39341
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1432 |
52508
99ca58c7cd0d
interfaces: make `repository.imanifeststorage` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
1433 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1434 def __len__(self): |
39341
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1435 """Obtain the number of revisions stored for this manifest.""" |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1436 |
52508
99ca58c7cd0d
interfaces: make `repository.imanifeststorage` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
1437 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1438 def __iter__(self): |
39341
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1439 """Iterate over revision numbers for this manifest.""" |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1440 |
52508
99ca58c7cd0d
interfaces: make `repository.imanifeststorage` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
1441 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1442 def rev(self, node): |
39341
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1443 """Obtain the revision number given a binary node. |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1444 |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1445 Raises ``error.LookupError`` if the node is not known. |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1446 """ |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1447 |
52508
99ca58c7cd0d
interfaces: make `repository.imanifeststorage` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
1448 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1449 def node(self, rev): |
39341
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1450 """Obtain the node value given a revision number. |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1451 |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1452 Raises ``error.LookupError`` if the revision is not known. |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1453 """ |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1454 |
52508
99ca58c7cd0d
interfaces: make `repository.imanifeststorage` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
1455 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1456 def lookup(self, value): |
39341
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1457 """Attempt to resolve a value to a node. |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1458 |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1459 Value can be a binary node, hex node, revision number, or a bytes |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1460 that can be converted to an integer. |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1461 |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1462 Raises ``error.LookupError`` if a ndoe could not be resolved. |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1463 """ |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1464 |
52508
99ca58c7cd0d
interfaces: make `repository.imanifeststorage` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
1465 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1466 def parents(self, node): |
39341
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1467 """Returns a 2-tuple of parent nodes for a node. |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1468 |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1469 Values will be ``nullid`` if the parent is empty. |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1470 """ |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1471 |
52508
99ca58c7cd0d
interfaces: make `repository.imanifeststorage` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
1472 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1473 def parentrevs(self, rev): |
39341
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1474 """Like parents() but operates on revision numbers.""" |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1475 |
52508
99ca58c7cd0d
interfaces: make `repository.imanifeststorage` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
1476 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1477 def linkrev(self, rev): |
39341
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1478 """Obtain the changeset revision number a revision is linked to.""" |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1479 |
52508
99ca58c7cd0d
interfaces: make `repository.imanifeststorage` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
1480 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1481 def revision(self, node): |
39341
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1482 """Obtain fulltext data for a node.""" |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1483 |
52508
99ca58c7cd0d
interfaces: make `repository.imanifeststorage` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
1484 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1485 def rawdata(self, node): |
42740
2128c76c8970
rawdata: forward `rawdata` call on `manifestlog`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42620
diff
changeset
|
1486 """Obtain raw data for a node.""" |
2128c76c8970
rawdata: forward `rawdata` call on `manifestlog`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42620
diff
changeset
|
1487 |
52508
99ca58c7cd0d
interfaces: make `repository.imanifeststorage` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
1488 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1489 def revdiff(self, rev1, rev2): |
39341
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1490 """Obtain a delta between two revision numbers. |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1491 |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1492 The returned data is the result of ``bdiff.bdiff()`` on the raw |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1493 revision data. |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1494 """ |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1495 |
52508
99ca58c7cd0d
interfaces: make `repository.imanifeststorage` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
1496 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1497 def cmp(self, node, fulltext): |
39341
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1498 """Compare fulltext to another revision. |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1499 |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1500 Returns True if the fulltext is different from what is stored. |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1501 """ |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1502 |
52508
99ca58c7cd0d
interfaces: make `repository.imanifeststorage` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
1503 @abc.abstractmethod |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
1504 def emitrevisions( |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1505 self, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
1506 nodes, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
1507 nodesorder=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
1508 revisiondata=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
1509 assumehaveparentrevisions=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
1510 ): |
39867
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
1511 """Produce ``irevisiondelta`` describing revisions. |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
1512 |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
1513 See the documentation for ``ifiledata`` for more. |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
1514 """ |
5a9ab91e0a45
revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39865
diff
changeset
|
1515 |
52508
99ca58c7cd0d
interfaces: make `repository.imanifeststorage` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
1516 @abc.abstractmethod |
45811
a5206e71c536
revlog: extend addgroup() with callback for duplicates
Joerg Sonnenberger <joerg@bec.de>
parents:
45671
diff
changeset
|
1517 def addgroup( |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1518 self, |
45811
a5206e71c536
revlog: extend addgroup() with callback for duplicates
Joerg Sonnenberger <joerg@bec.de>
parents:
45671
diff
changeset
|
1519 deltas, |
a5206e71c536
revlog: extend addgroup() with callback for duplicates
Joerg Sonnenberger <joerg@bec.de>
parents:
45671
diff
changeset
|
1520 linkmapper, |
a5206e71c536
revlog: extend addgroup() with callback for duplicates
Joerg Sonnenberger <joerg@bec.de>
parents:
45671
diff
changeset
|
1521 transaction, |
a5206e71c536
revlog: extend addgroup() with callback for duplicates
Joerg Sonnenberger <joerg@bec.de>
parents:
45671
diff
changeset
|
1522 addrevisioncb=None, |
a5206e71c536
revlog: extend addgroup() with callback for duplicates
Joerg Sonnenberger <joerg@bec.de>
parents:
45671
diff
changeset
|
1523 duplicaterevisioncb=None, |
a5206e71c536
revlog: extend addgroup() with callback for duplicates
Joerg Sonnenberger <joerg@bec.de>
parents:
45671
diff
changeset
|
1524 ): |
39341
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1525 """Process a series of deltas for storage. |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1526 |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1527 See the documentation in ``ifilemutation`` for more. |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1528 """ |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1529 |
52508
99ca58c7cd0d
interfaces: make `repository.imanifeststorage` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
1530 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1531 def rawsize(self, rev): |
39863
9534fe1e5d28
manifest: add rawsize() proxy (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39856
diff
changeset
|
1532 """Obtain the size of tracked data. |
9534fe1e5d28
manifest: add rawsize() proxy (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39856
diff
changeset
|
1533 |
42795
83d090ebec0c
rawdata: update callers in repository
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42744
diff
changeset
|
1534 Is equivalent to ``len(m.rawdata(node))``. |
39863
9534fe1e5d28
manifest: add rawsize() proxy (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39856
diff
changeset
|
1535 |
9534fe1e5d28
manifest: add rawsize() proxy (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39856
diff
changeset
|
1536 TODO this method is only used by upgrade code and may be removed. |
9534fe1e5d28
manifest: add rawsize() proxy (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39856
diff
changeset
|
1537 """ |
9534fe1e5d28
manifest: add rawsize() proxy (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39856
diff
changeset
|
1538 |
52508
99ca58c7cd0d
interfaces: make `repository.imanifeststorage` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
1539 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1540 def getstrippoint(self, minlink): |
39341
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1541 """Find minimum revision that must be stripped to strip a linkrev. |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1542 |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1543 See the documentation in ``ifilemutation`` for more. |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1544 """ |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1545 |
52508
99ca58c7cd0d
interfaces: make `repository.imanifeststorage` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
1546 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1547 def strip(self, minlink, transaction): |
39341
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1548 """Remove storage of items starting at a linkrev. |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1549 |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1550 See the documentation in ``ifilemutation`` for more. |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1551 """ |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1552 |
52508
99ca58c7cd0d
interfaces: make `repository.imanifeststorage` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
1553 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1554 def checksize(self): |
39341
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1555 """Obtain the expected sizes of backing files. |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1556 |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1557 TODO this is used by verify and it should not be part of the interface. |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1558 """ |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1559 |
52508
99ca58c7cd0d
interfaces: make `repository.imanifeststorage` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
1560 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1561 def files(self): |
39341
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1562 """Obtain paths that are backing storage for this manifest. |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1563 |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1564 TODO this is used by verify and there should probably be a better API |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1565 for this functionality. |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1566 """ |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1567 |
52508
99ca58c7cd0d
interfaces: make `repository.imanifeststorage` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
1568 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1569 def deltaparent(self, rev): |
39341
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1570 """Obtain the revision that a revision is delta'd against. |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1571 |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1572 TODO delta encoding is an implementation detail of storage and should |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1573 not be exposed to the storage interface. |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1574 """ |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1575 |
52508
99ca58c7cd0d
interfaces: make `repository.imanifeststorage` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
1576 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1577 def clone(self, tr, dest, **kwargs): |
39341
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1578 """Clone this instance to another.""" |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1579 |
52508
99ca58c7cd0d
interfaces: make `repository.imanifeststorage` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
1580 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1581 def clearcaches(self, clear_persisted_data=False): |
39341
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1582 """Clear any caches associated with this instance.""" |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1583 |
52508
99ca58c7cd0d
interfaces: make `repository.imanifeststorage` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
1584 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1585 def dirlog(self, d): |
39341
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1586 """Obtain a manifest storage instance for a tree.""" |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1587 |
52508
99ca58c7cd0d
interfaces: make `repository.imanifeststorage` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
1588 @abc.abstractmethod |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
1589 def add( |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1590 self, |
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1591 m, |
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1592 transaction, |
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1593 link, |
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1594 p1, |
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1595 p2, |
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1596 added, |
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1597 removed, |
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1598 readtree=None, |
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1599 match=None, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
1600 ): |
39341
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1601 """Add a revision to storage. |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1602 |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1603 ``m`` is an object conforming to ``imanifestdict``. |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1604 |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1605 ``link`` is the linkrev revision number. |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1606 |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1607 ``p1`` and ``p2`` are the parent revision numbers. |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1608 |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1609 ``added`` and ``removed`` are iterables of added and removed paths, |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1610 respectively. |
39684
24870f1be088
narrow: when writing treemanifests, skip inspecting directories outside narrow
spectral <spectral@google.com>
parents:
39342
diff
changeset
|
1611 |
24870f1be088
narrow: when writing treemanifests, skip inspecting directories outside narrow
spectral <spectral@google.com>
parents:
39342
diff
changeset
|
1612 ``readtree`` is a function that can be used to read the child tree(s) |
24870f1be088
narrow: when writing treemanifests, skip inspecting directories outside narrow
spectral <spectral@google.com>
parents:
39342
diff
changeset
|
1613 when recursively writing the full tree structure when using |
24870f1be088
narrow: when writing treemanifests, skip inspecting directories outside narrow
spectral <spectral@google.com>
parents:
39342
diff
changeset
|
1614 treemanifets. |
24870f1be088
narrow: when writing treemanifests, skip inspecting directories outside narrow
spectral <spectral@google.com>
parents:
39342
diff
changeset
|
1615 |
24870f1be088
narrow: when writing treemanifests, skip inspecting directories outside narrow
spectral <spectral@google.com>
parents:
39342
diff
changeset
|
1616 ``match`` is a matcher that can be used to hint to storage that not all |
24870f1be088
narrow: when writing treemanifests, skip inspecting directories outside narrow
spectral <spectral@google.com>
parents:
39342
diff
changeset
|
1617 paths must be inspected; this is an optimization and can be safely |
24870f1be088
narrow: when writing treemanifests, skip inspecting directories outside narrow
spectral <spectral@google.com>
parents:
39342
diff
changeset
|
1618 ignored. Note that the storage must still be able to reproduce a full |
24870f1be088
narrow: when writing treemanifests, skip inspecting directories outside narrow
spectral <spectral@google.com>
parents:
39342
diff
changeset
|
1619 manifest including files that did not match. |
39341
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1620 """ |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39272
diff
changeset
|
1621 |
52508
99ca58c7cd0d
interfaces: make `repository.imanifeststorage` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
1622 @abc.abstractmethod |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
1623 def storageinfo( |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1624 self, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
1625 exclusivefiles=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
1626 sharedfiles=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
1627 revisionscount=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
1628 trackedsize=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
1629 storedsize=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
1630 ): |
39874
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
1631 """Obtain information about storage for this manifest's data. |
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
1632 |
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
1633 See ``ifilestorage.storageinfo()`` for a description of this method. |
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
1634 This one behaves the same way, except for manifest data. |
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
1635 """ |
14e500b58263
revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39872
diff
changeset
|
1636 |
52508
99ca58c7cd0d
interfaces: make `repository.imanifeststorage` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
1637 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1638 def get_revlog(self): |
50667
32837c7e2e4b
revlog: add a `get_revlog` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50474
diff
changeset
|
1639 """return an actual revlog instance if any |
32837c7e2e4b
revlog: add a `get_revlog` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50474
diff
changeset
|
1640 |
32837c7e2e4b
revlog: add a `get_revlog` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50474
diff
changeset
|
1641 This exist because a lot of code leverage the fact the underlying |
32837c7e2e4b
revlog: add a `get_revlog` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50474
diff
changeset
|
1642 storage is a revlog for optimization, so giving simple way to access |
32837c7e2e4b
revlog: add a `get_revlog` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50474
diff
changeset
|
1643 the revlog instance helps such code. |
32837c7e2e4b
revlog: add a `get_revlog` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50474
diff
changeset
|
1644 """ |
32837c7e2e4b
revlog: add a `get_revlog` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50474
diff
changeset
|
1645 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
1646 |
52474
26dd402c3497
interfaces: convert the repository zope interfaces to Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52463
diff
changeset
|
1647 class imanifestlog(Protocol): |
39268
2af6b2d8d1d8
repository: clarify role of imanifestlog
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39263
diff
changeset
|
1648 """Interface representing a collection of manifest snapshots. |
2af6b2d8d1d8
repository: clarify role of imanifestlog
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39263
diff
changeset
|
1649 |
2af6b2d8d1d8
repository: clarify role of imanifestlog
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39263
diff
changeset
|
1650 Represents the root manifest in a repository. |
2af6b2d8d1d8
repository: clarify role of imanifestlog
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39263
diff
changeset
|
1651 |
2af6b2d8d1d8
repository: clarify role of imanifestlog
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39263
diff
changeset
|
1652 Also serves as a means to access nested tree manifests and to cache |
2af6b2d8d1d8
repository: clarify role of imanifestlog
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39263
diff
changeset
|
1653 tree manifests. |
2af6b2d8d1d8
repository: clarify role of imanifestlog
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39263
diff
changeset
|
1654 """ |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1655 |
52511
ed70604d6e07
interfaces: convert `repository.imanifestlog` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52509
diff
changeset
|
1656 nodeconstants: NodeConstants |
ed70604d6e07
interfaces: convert `repository.imanifestlog` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52509
diff
changeset
|
1657 """nodeconstants used by the current repository.""" |
ed70604d6e07
interfaces: convert `repository.imanifestlog` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52509
diff
changeset
|
1658 |
ed70604d6e07
interfaces: convert `repository.imanifestlog` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52509
diff
changeset
|
1659 narrowed: bool |
ed70604d6e07
interfaces: convert `repository.imanifestlog` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52509
diff
changeset
|
1660 """True, is the manifest is narrowed by a matcher""" |
51837
bcb825bf0c5e
manifest: add a read_delta_new_entries method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51833
diff
changeset
|
1661 |
52512
196f441ffc93
interfaces: make `repository.imanifestlog` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52511
diff
changeset
|
1662 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1663 def __getitem__(self, node): |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1664 """Obtain a manifest instance for a given binary node. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1665 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1666 Equivalent to calling ``self.get('', node)``. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1667 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1668 The returned object conforms to the ``imanifestrevisionstored`` |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1669 interface. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1670 """ |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1671 |
52512
196f441ffc93
interfaces: make `repository.imanifestlog` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52511
diff
changeset
|
1672 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1673 def get(self, tree, node, verify=True): |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1674 """Retrieve the manifest instance for a given directory and binary node. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1675 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1676 ``node`` always refers to the node of the root manifest (which will be |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1677 the only manifest if flat manifests are being used). |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1678 |
39263
43387fd2aa1f
manifest: rename dir to tree to avoid shadowing built-in
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39262
diff
changeset
|
1679 If ``tree`` is the empty string, the root manifest is returned. |
43387fd2aa1f
manifest: rename dir to tree to avoid shadowing built-in
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39262
diff
changeset
|
1680 Otherwise the manifest for the specified directory will be returned |
43387fd2aa1f
manifest: rename dir to tree to avoid shadowing built-in
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39262
diff
changeset
|
1681 (requires tree manifests). |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1682 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1683 If ``verify`` is True, ``LookupError`` is raised if the node is not |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1684 known. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1685 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1686 The returned object conforms to the ``imanifestrevisionstored`` |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1687 interface. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1688 """ |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1689 |
52512
196f441ffc93
interfaces: make `repository.imanifestlog` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52511
diff
changeset
|
1690 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1691 def getstorage(self, tree): |
39272
73cf21b2e8a6
manifest: add getstorage() to manifestlog and use it globally
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39269
diff
changeset
|
1692 """Retrieve an interface to storage for a particular tree. |
73cf21b2e8a6
manifest: add getstorage() to manifestlog and use it globally
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39269
diff
changeset
|
1693 |
73cf21b2e8a6
manifest: add getstorage() to manifestlog and use it globally
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39269
diff
changeset
|
1694 If ``tree`` is the empty bytestring, storage for the root manifest will |
73cf21b2e8a6
manifest: add getstorage() to manifestlog and use it globally
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39269
diff
changeset
|
1695 be returned. Otherwise storage for a tree manifest is returned. |
73cf21b2e8a6
manifest: add getstorage() to manifestlog and use it globally
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39269
diff
changeset
|
1696 |
73cf21b2e8a6
manifest: add getstorage() to manifestlog and use it globally
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39269
diff
changeset
|
1697 TODO formalize interface for returned object. |
73cf21b2e8a6
manifest: add getstorage() to manifestlog and use it globally
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39269
diff
changeset
|
1698 """ |
73cf21b2e8a6
manifest: add getstorage() to manifestlog and use it globally
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39269
diff
changeset
|
1699 |
52512
196f441ffc93
interfaces: make `repository.imanifestlog` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52511
diff
changeset
|
1700 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1701 def clearcaches(self, clear_persisted_data: bool = False) -> None: |
38532
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1702 """Clear caches associated with this collection.""" |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38513
diff
changeset
|
1703 |
52512
196f441ffc93
interfaces: make `repository.imanifestlog` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52511
diff
changeset
|
1704 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1705 def rev(self, node): |
38556
f2f9bacf0587
manifest: define and implement rev() on manifestlog
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38532
diff
changeset
|
1706 """Obtain the revision number for a binary node. |
f2f9bacf0587
manifest: define and implement rev() on manifestlog
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38532
diff
changeset
|
1707 |
f2f9bacf0587
manifest: define and implement rev() on manifestlog
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38532
diff
changeset
|
1708 Raises ``error.LookupError`` if the node is not known. |
f2f9bacf0587
manifest: define and implement rev() on manifestlog
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38532
diff
changeset
|
1709 """ |
f2f9bacf0587
manifest: define and implement rev() on manifestlog
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38532
diff
changeset
|
1710 |
52512
196f441ffc93
interfaces: make `repository.imanifestlog` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52511
diff
changeset
|
1711 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1712 def update_caches(self, transaction): |
44864
97ebdb192b00
nodemap: also warm manifest nodemap with other caches
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44665
diff
changeset
|
1713 """update whatever cache are relevant for the used storage.""" |
97ebdb192b00
nodemap: also warm manifest nodemap with other caches
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44665
diff
changeset
|
1714 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
1715 |
52474
26dd402c3497
interfaces: convert the repository zope interfaces to Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52463
diff
changeset
|
1716 class ilocalrepositoryfilestorage(Protocol): |
39780
e4e881572382
localrepo: iteratively derive local repository type
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39716
diff
changeset
|
1717 """Local repository sub-interface providing access to tracked file storage. |
e4e881572382
localrepo: iteratively derive local repository type
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39716
diff
changeset
|
1718 |
e4e881572382
localrepo: iteratively derive local repository type
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39716
diff
changeset
|
1719 This interface defines how a repository accesses storage for a single |
e4e881572382
localrepo: iteratively derive local repository type
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39716
diff
changeset
|
1720 tracked file path. |
e4e881572382
localrepo: iteratively derive local repository type
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39716
diff
changeset
|
1721 """ |
e4e881572382
localrepo: iteratively derive local repository type
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39716
diff
changeset
|
1722 |
52519
ef119f914fc1
localrepo: subclass the new `ilocalrepositoryfilestorage` Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
52517
diff
changeset
|
1723 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1724 def file(self, f): |
39780
e4e881572382
localrepo: iteratively derive local repository type
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39716
diff
changeset
|
1725 """Obtain a filelog for a tracked path. |
e4e881572382
localrepo: iteratively derive local repository type
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39716
diff
changeset
|
1726 |
e4e881572382
localrepo: iteratively derive local repository type
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39716
diff
changeset
|
1727 The returned type conforms to the ``ifilestorage`` interface. |
e4e881572382
localrepo: iteratively derive local repository type
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39716
diff
changeset
|
1728 """ |
e4e881572382
localrepo: iteratively derive local repository type
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39716
diff
changeset
|
1729 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
1730 |
52474
26dd402c3497
interfaces: convert the repository zope interfaces to Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52463
diff
changeset
|
1731 class ilocalrepositorymain(Protocol): |
39780
e4e881572382
localrepo: iteratively derive local repository type
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39716
diff
changeset
|
1732 """Main interface for local repositories. |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1733 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1734 This currently captures the reality of things - not how things should be. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1735 """ |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1736 |
52514
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1737 nodeconstants: NodeConstants |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1738 """Constant nodes matching the hash function used by the repository.""" |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1739 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1740 nullid: bytes |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1741 """null revision for the hash function used by the repository.""" |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1742 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1743 supported: set[bytes] |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1744 """Set of requirements that this repo is capable of opening.""" |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1745 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1746 requirements: set[bytes] |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1747 """Set of requirements this repo uses.""" |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1748 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1749 features: set[bytes] |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1750 """Set of "features" this repository supports. |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1751 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1752 A "feature" is a loosely-defined term. It can refer to a feature |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1753 in the classical sense or can describe an implementation detail |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1754 of the repository. For example, a ``readonly`` feature may denote |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1755 the repository as read-only. Or a ``revlogfilestore`` feature may |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1756 denote that the repository is using revlogs for file storage. |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1757 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1758 The intent of features is to provide a machine-queryable mechanism |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1759 for repo consumers to test for various repository characteristics. |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1760 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1761 Features are similar to ``requirements``. The main difference is that |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1762 requirements are stored on-disk and represent requirements to open the |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1763 repository. Features are more run-time capabilities of the repository |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1764 and more granular capabilities (which may be derived from requirements). |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1765 """ |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1766 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1767 filtername: bytes |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1768 """Name of the repoview that is active on this repo.""" |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1769 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1770 vfs_map: Mapping[bytes, Vfs] |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1771 """a bytes-key → vfs mapping used by transaction and others""" |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1772 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1773 wvfs: Vfs |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1774 """VFS used to access the working directory.""" |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1775 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1776 vfs: Vfs |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1777 """VFS rooted at the .hg directory. |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1778 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1779 Used to access repository data not in the store. |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1780 """ |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1781 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1782 svfs: Vfs |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1783 """VFS rooted at the store. |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1784 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1785 Used to access repository data in the store. Typically .hg/store. |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1786 But can point elsewhere if the store is shared. |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1787 """ |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1788 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1789 root: bytes |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1790 """Path to the root of the working directory.""" |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1791 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1792 path: bytes |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1793 """Path to the .hg directory.""" |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1794 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1795 origroot: bytes |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1796 """The filesystem path that was used to construct the repo.""" |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1797 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1798 auditor: Any |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1799 """A pathauditor for the working directory. |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1800 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1801 This checks if a path refers to a nested repository. |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1802 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1803 Operates on the filesystem. |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1804 """ |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1805 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1806 nofsauditor: Any # TODO: add type hints |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1807 """A pathauditor for the working directory. |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1808 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1809 This is like ``auditor`` except it doesn't do filesystem checks. |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1810 """ |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1811 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1812 baseui: Ui |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1813 """Original ui instance passed into constructor.""" |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1814 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1815 ui: Ui |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1816 """Main ui instance for this instance.""" |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1817 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1818 sharedpath: bytes |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1819 """Path to the .hg directory of the repo this repo was shared from.""" |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1820 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1821 store: Any # TODO: add type hints |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1822 """A store instance.""" |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1823 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1824 spath: bytes |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1825 """Path to the store.""" |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1826 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1827 sjoin: Callable # TODO: add type hints |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1828 """Alias to self.store.join.""" |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1829 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1830 cachevfs: Vfs |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1831 """A VFS used to access the cache directory. |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1832 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1833 Typically .hg/cache. |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1834 """ |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1835 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1836 wcachevfs: Vfs |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1837 """A VFS used to access the cache directory dedicated to working copy |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1838 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1839 Typically .hg/wcache. |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1840 """ |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1841 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1842 filteredrevcache: Any # TODO: add type hints |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1843 """Holds sets of revisions to be filtered.""" |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1844 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1845 names: Any # TODO: add type hints |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1846 """A ``namespaces`` instance.""" |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1847 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1848 filecopiesmode: Any # TODO: add type hints |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1849 """The way files copies should be dealt with in this repo.""" |
43142
beed7ce61681
sidedatacopies: write copies information in sidedata when applicable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43077
diff
changeset
|
1850 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
1851 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1852 def close(self): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1853 """Close the handle on this repository.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1854 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
1855 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1856 def peer(self, path=None): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1857 """Obtain an object conforming to the ``peer`` interface.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1858 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
1859 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1860 def unfiltered(self): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1861 """Obtain an unfiltered/raw view of this repo.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1862 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
1863 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1864 def filtered(self, name, visibilityexceptions=None): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1865 """Obtain a named view of this repository.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1866 |
52514
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1867 obsstore: Any # TODO: add type hints |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1868 """A store of obsolescence data.""" |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1869 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1870 changelog: Any # TODO: add type hints |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1871 """A handle on the changelog revlog.""" |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1872 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1873 manifestlog: imanifestlog |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1874 """An instance conforming to the ``imanifestlog`` interface. |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1875 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1876 Provides access to manifests for the repository. |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1877 """ |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1878 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1879 dirstate: intdirstate.idirstate |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1880 """Working directory state.""" |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1881 |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1882 narrowpats: Any # TODO: add type hints |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
1883 """Matcher patterns for this repository's narrowspec.""" |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1884 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
1885 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1886 def narrowmatch(self, match=None, includeexact=False): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1887 """Obtain a matcher for the narrowspec.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1888 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
1889 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1890 def setnarrowpats(self, newincludes, newexcludes): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1891 """Define the narrowspec for this repository.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1892 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
1893 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1894 def __getitem__(self, changeid): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1895 """Try to resolve a changectx.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1896 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
1897 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1898 def __contains__(self, changeid): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1899 """Whether a changeset exists.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1900 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
1901 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1902 def __nonzero__(self): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1903 """Always returns True.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1904 return True |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1905 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1906 __bool__ = __nonzero__ |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1907 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
1908 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1909 def __len__(self): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1910 """Returns the number of changesets in the repo.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1911 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
1912 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1913 def __iter__(self): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1914 """Iterate over revisions in the changelog.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1915 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
1916 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1917 def revs(self, expr, *args): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1918 """Evaluate a revset. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1919 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1920 Emits revisions. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1921 """ |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1922 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
1923 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1924 def set(self, expr, *args): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1925 """Evaluate a revset. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1926 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1927 Emits changectx instances. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1928 """ |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1929 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
1930 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1931 def anyrevs(self, specs, user=False, localalias=None): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1932 """Find revisions matching one of the given revsets.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1933 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
1934 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1935 def url(self): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1936 """Returns a string representing the location of this repo.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1937 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
1938 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1939 def hook(self, name, throw=False, **args): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1940 """Call a hook.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1941 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
1942 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1943 def tags(self): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1944 """Return a mapping of tag to node.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1945 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
1946 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1947 def tagtype(self, tagname): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1948 """Return the type of a given tag.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1949 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
1950 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1951 def tagslist(self): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1952 """Return a list of tags ordered by revision.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1953 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
1954 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1955 def nodetags(self, node): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1956 """Return the tags associated with a node.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1957 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
1958 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1959 def nodebookmarks(self, node): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1960 """Return the list of bookmarks pointing to the specified node.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1961 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
1962 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1963 def branchmap(self): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1964 """Return a mapping of branch to heads in that branch.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1965 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
1966 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1967 def revbranchcache(self): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1968 pass |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1969 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
1970 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1971 def register_changeset(self, rev, changelogrevision): |
46443
0903d6b9b1df
repository: introduce register_changeset callback
Joerg Sonnenberger <joerg@bec.de>
parents:
45961
diff
changeset
|
1972 """Extension point for caches for new nodes. |
0903d6b9b1df
repository: introduce register_changeset callback
Joerg Sonnenberger <joerg@bec.de>
parents:
45961
diff
changeset
|
1973 |
0903d6b9b1df
repository: introduce register_changeset callback
Joerg Sonnenberger <joerg@bec.de>
parents:
45961
diff
changeset
|
1974 Multiple consumers are expected to need parts of the changelogrevision, |
0903d6b9b1df
repository: introduce register_changeset callback
Joerg Sonnenberger <joerg@bec.de>
parents:
45961
diff
changeset
|
1975 so it is provided as optimization to avoid duplicate lookups. A simple |
0903d6b9b1df
repository: introduce register_changeset callback
Joerg Sonnenberger <joerg@bec.de>
parents:
45961
diff
changeset
|
1976 cache would be fragile when other revisions are accessed, too.""" |
0903d6b9b1df
repository: introduce register_changeset callback
Joerg Sonnenberger <joerg@bec.de>
parents:
45961
diff
changeset
|
1977 pass |
0903d6b9b1df
repository: introduce register_changeset callback
Joerg Sonnenberger <joerg@bec.de>
parents:
45961
diff
changeset
|
1978 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
1979 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1980 def branchtip(self, branchtip, ignoremissing=False): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1981 """Return the tip node for a given branch.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1982 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
1983 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1984 def lookup(self, key): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1985 """Resolve the node for a revision.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1986 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
1987 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1988 def lookupbranch(self, key): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1989 """Look up the branch name of the given revision or branch name.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1990 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
1991 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1992 def known(self, nodes): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1993 """Determine whether a series of nodes is known. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1994 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1995 Returns a list of bools. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1996 """ |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
1997 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
1998 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
1999 def local(self): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2000 """Whether the repository is local.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2001 return True |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2002 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2003 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2004 def publishing(self): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2005 """Whether the repository is a publishing repository.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2006 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2007 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2008 def cancopy(self): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2009 pass |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2010 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2011 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2012 def shared(self): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2013 """The type of shared repository or None.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2014 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2015 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2016 def wjoin(self, f, *insidef): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2017 """Calls self.vfs.reljoin(self.root, f, *insidef)""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2018 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2019 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2020 def setparents(self, p1, p2): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2021 """Set the parent nodes of the working directory.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2022 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2023 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2024 def filectx(self, path, changeid=None, fileid=None): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2025 """Obtain a filectx for the given file revision.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2026 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2027 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2028 def getcwd(self): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2029 """Obtain the current working directory from the dirstate.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2030 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2031 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2032 def pathto(self, f, cwd=None): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2033 """Obtain the relative path to a file.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2034 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2035 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2036 def adddatafilter(self, name, fltr): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2037 pass |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2038 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2039 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2040 def wread(self, filename): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2041 """Read a file from wvfs, using data filters.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2042 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2043 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2044 def wwrite(self, filename, data, flags, backgroundclose=False, **kwargs): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2045 """Write data to a file in the wvfs, using data filters.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2046 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2047 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2048 def wwritedata(self, filename, data): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2049 """Resolve data for writing to the wvfs, using data filters.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2050 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2051 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2052 def currenttransaction(self): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2053 """Obtain the current transaction instance or None.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2054 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2055 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2056 def transaction(self, desc, report=None): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2057 """Open a new transaction to write to the repository.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2058 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2059 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2060 def undofiles(self): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2061 """Returns a list of (vfs, path) for files to undo transactions.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2062 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2063 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2064 def recover(self): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2065 """Roll back an interrupted transaction.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2066 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2067 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2068 def rollback(self, dryrun=False, force=False): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2069 """Undo the last transaction. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2070 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2071 DANGEROUS. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2072 """ |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2073 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2074 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2075 def updatecaches(self, tr=None, full=False, caches=None): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2076 """Warm repo caches.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2077 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2078 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2079 def invalidatecaches(self): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2080 """Invalidate cached data due to the repository mutating.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2081 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2082 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2083 def invalidatevolatilesets(self): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2084 pass |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2085 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2086 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2087 def invalidatedirstate(self): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2088 """Invalidate the dirstate.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2089 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2090 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2091 def invalidate(self, clearfilecache=False): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2092 pass |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2093 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2094 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2095 def invalidateall(self): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2096 pass |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2097 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2098 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2099 def lock(self, wait=True): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2100 """Lock the repository store and return a lock instance.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2101 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2102 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2103 def currentlock(self): |
50323
6901916458bd
localrepo: add a `currentlock` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50281
diff
changeset
|
2104 """Return the lock if it's held or None.""" |
6901916458bd
localrepo: add a `currentlock` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50281
diff
changeset
|
2105 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2106 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2107 def wlock(self, wait=True): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2108 """Lock the non-store parts of the repository.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2109 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2110 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2111 def currentwlock(self): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2112 """Return the wlock if it's held or None.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2113 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2114 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2115 def checkcommitpatterns(self, wctx, match, status, fail): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2116 pass |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2117 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2118 @abc.abstractmethod |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
2119 def commit( |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2120 self, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2121 text=b'', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
2122 user=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
2123 date=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
2124 match=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
2125 force=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
2126 editor=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
2127 extra=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
2128 ): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2129 """Add a new revision to the repository.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2130 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2131 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2132 def commitctx(self, ctx, error=False, origctx=None): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2133 """Commit a commitctx instance to the repository.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2134 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2135 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2136 def destroying(self): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2137 """Inform the repository that nodes are about to be destroyed.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2138 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2139 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2140 def destroyed(self): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2141 """Inform the repository that nodes have been destroyed.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2142 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2143 @abc.abstractmethod |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
2144 def status( |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2145 self, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2146 node1=b'.', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
2147 node2=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
2148 match=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
2149 ignored=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
2150 clean=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
2151 unknown=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
2152 listsubrepos=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
2153 ): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2154 """Convenience method to call repo[x].status().""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2155 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2156 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2157 def addpostdsstatus(self, ps): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2158 pass |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2159 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2160 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2161 def postdsstatus(self): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2162 pass |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2163 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2164 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2165 def clearpostdsstatus(self): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2166 pass |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2167 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2168 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2169 def heads(self, start=None): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2170 """Obtain list of nodes that are DAG heads.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2171 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2172 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2173 def branchheads(self, branch=None, start=None, closed=False): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2174 pass |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2175 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2176 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2177 def branches(self, nodes): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2178 pass |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2179 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2180 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2181 def between(self, pairs): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2182 pass |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2183 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2184 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2185 def checkpush(self, pushop): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2186 pass |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2187 |
52514
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
2188 prepushoutgoinghooks: util.hooks |
dfb60fb155da
interfaces: convert `ilocalrepositorymain` from zope `Attribute` attrs
Matt Harbison <matt_harbison@yahoo.com>
parents:
52512
diff
changeset
|
2189 """util.hooks instance.""" |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2190 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2191 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2192 def pushkey(self, namespace, key, old, new): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2193 pass |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2194 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2195 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2196 def listkeys(self, namespace): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2197 pass |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2198 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2199 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2200 def debugwireargs(self, one, two, three=None, four=None, five=None): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2201 pass |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2202 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2203 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2204 def savecommitmessage(self, text): |
37183
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33823
diff
changeset
|
2205 pass |
39780
e4e881572382
localrepo: iteratively derive local repository type
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39716
diff
changeset
|
2206 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2207 @abc.abstractmethod |
47097
81eb7091c494
sidedata: add a way of replacing an existing sidedata computer
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47095
diff
changeset
|
2208 def register_sidedata_computer( |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2209 self, kind, category, keys, computer, flags, replace=False |
47097
81eb7091c494
sidedata: add a way of replacing an existing sidedata computer
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47095
diff
changeset
|
2210 ): |
46726
bc2519513ae0
sidedata-exchange: add `wanted_sidedata` and `sidedata_computers` to repos
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46725
diff
changeset
|
2211 pass |
bc2519513ae0
sidedata-exchange: add `wanted_sidedata` and `sidedata_computers` to repos
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46725
diff
changeset
|
2212 |
52515
c0d9fda9f5f5
interfaces: make `repository.ilocalrepositorymain` methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52514
diff
changeset
|
2213 @abc.abstractmethod |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2214 def register_wanted_sidedata(self, category): |
46726
bc2519513ae0
sidedata-exchange: add `wanted_sidedata` and `sidedata_computers` to repos
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46725
diff
changeset
|
2215 pass |
bc2519513ae0
sidedata-exchange: add `wanted_sidedata` and `sidedata_computers` to repos
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46725
diff
changeset
|
2216 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
2217 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
2218 class completelocalrepository( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
2219 ilocalrepositorymain, ilocalrepositoryfilestorage |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
2220 ): |
39780
e4e881572382
localrepo: iteratively derive local repository type
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39716
diff
changeset
|
2221 """Complete interface for a local repository.""" |
40022
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2222 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
2223 |
52474
26dd402c3497
interfaces: convert the repository zope interfaces to Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52463
diff
changeset
|
2224 class iwireprotocolcommandcacher(Protocol): |
40022
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2225 """Represents a caching backend for wire protocol commands. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2226 |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2227 Wire protocol version 2 supports transparent caching of many commands. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2228 To leverage this caching, servers can activate objects that cache |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2229 command responses. Objects handle both cache writing and reading. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2230 This interface defines how that response caching mechanism works. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2231 |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2232 Wire protocol version 2 commands emit a series of objects that are |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2233 serialized and sent to the client. The caching layer exists between |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2234 the invocation of the command function and the sending of its output |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2235 objects to an output layer. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2236 |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2237 Instances of this interface represent a binding to a cache that |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2238 can serve a response (in place of calling a command function) and/or |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2239 write responses to a cache for subsequent use. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2240 |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2241 When a command request arrives, the following happens with regards |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2242 to this interface: |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2243 |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2244 1. The server determines whether the command request is cacheable. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2245 2. If it is, an instance of this interface is spawned. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2246 3. The cacher is activated in a context manager (``__enter__`` is called). |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2247 4. A cache *key* for that request is derived. This will call the |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2248 instance's ``adjustcachekeystate()`` method so the derivation |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2249 can be influenced. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2250 5. The cacher is informed of the derived cache key via a call to |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2251 ``setcachekey()``. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2252 6. The cacher's ``lookup()`` method is called to test for presence of |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2253 the derived key in the cache. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2254 7. If ``lookup()`` returns a hit, that cached result is used in place |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2255 of invoking the command function. ``__exit__`` is called and the instance |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2256 is discarded. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2257 8. The command function is invoked. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2258 9. ``onobject()`` is called for each object emitted by the command |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2259 function. |
40279
4821affc154f
wireproto: fix incorrect function name in docstring
Connor Sheehan <sheehan@mozilla.com>
parents:
40171
diff
changeset
|
2260 10. After the final object is seen, ``onfinished()`` is called. |
40022
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2261 11. ``__exit__`` is called to signal the end of use of the instance. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2262 |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2263 Cache *key* derivation can be influenced by the instance. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2264 |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2265 Cache keys are initially derived by a deterministic representation of |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2266 the command request. This includes the command name, arguments, protocol |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2267 version, etc. This initial key derivation is performed by CBOR-encoding a |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2268 data structure and feeding that output into a hasher. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2269 |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2270 Instances of this interface can influence this initial key derivation |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2271 via ``adjustcachekeystate()``. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2272 |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2273 The instance is informed of the derived cache key via a call to |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2274 ``setcachekey()``. The instance must store the key locally so it can |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2275 be consulted on subsequent operations that may require it. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2276 |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2277 When constructed, the instance has access to a callable that can be used |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2278 for encoding response objects. This callable receives as its single |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2279 argument an object emitted by a command function. It returns an iterable |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2280 of bytes chunks representing the encoded object. Unless the cacher is |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2281 caching native Python objects in memory or has a way of reconstructing |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2282 the original Python objects, implementations typically call this function |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2283 to produce bytes from the output objects and then store those bytes in |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2284 the cache. When it comes time to re-emit those bytes, they are wrapped |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2285 in a ``wireprototypes.encodedresponse`` instance to tell the output |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2286 layer that they are pre-encoded. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2287 |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2288 When receiving the objects emitted by the command function, instances |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2289 can choose what to do with those objects. The simplest thing to do is |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2290 re-emit the original objects. They will be forwarded to the output |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2291 layer and will be processed as if the cacher did not exist. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2292 |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2293 Implementations could also choose to not emit objects - instead locally |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2294 buffering objects or their encoded representation. They could then emit |
40279
4821affc154f
wireproto: fix incorrect function name in docstring
Connor Sheehan <sheehan@mozilla.com>
parents:
40171
diff
changeset
|
2295 a single "coalesced" object when ``onfinished()`` is called. In |
40022
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2296 this way, the implementation would function as a filtering layer of |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2297 sorts. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2298 |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2299 When caching objects, typically the encoded form of the object will |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2300 be stored. Keep in mind that if the original object is forwarded to |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2301 the output layer, it will need to be encoded there as well. For large |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2302 output, this redundant encoding could add overhead. Implementations |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2303 could wrap the encoded object data in ``wireprototypes.encodedresponse`` |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2304 instances to avoid this overhead. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2305 """ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
2306 |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2307 def __enter__(self): |
40022
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2308 """Marks the instance as active. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2309 |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2310 Should return self. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2311 """ |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2312 |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2313 def __exit__(self, exctype, excvalue, exctb): |
40022
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2314 """Called when cacher is no longer used. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2315 |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2316 This can be used by implementations to perform cleanup actions (e.g. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2317 disconnecting network sockets, aborting a partially cached response. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2318 """ |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2319 |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2320 def adjustcachekeystate(self, state): |
40022
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2321 """Influences cache key derivation by adjusting state to derive key. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2322 |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2323 A dict defining the state used to derive the cache key is passed. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2324 |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2325 Implementations can modify this dict to record additional state that |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2326 is wanted to influence key derivation. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2327 |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2328 Implementations are *highly* encouraged to not modify or delete |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2329 existing keys. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2330 """ |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2331 |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2332 def setcachekey(self, key): |
40022
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2333 """Record the derived cache key for this request. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2334 |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2335 Instances may mutate the key for internal usage, as desired. e.g. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2336 instances may wish to prepend the repo name, introduce path |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2337 components for filesystem or URL addressing, etc. Behavior is up to |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2338 the cache. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2339 |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2340 Returns a bool indicating if the request is cacheable by this |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2341 instance. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2342 """ |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2343 |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2344 def lookup(self): |
40022
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2345 """Attempt to resolve an entry in the cache. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2346 |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2347 The instance is instructed to look for the cache key that it was |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2348 informed about via the call to ``setcachekey()``. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2349 |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2350 If there's no cache hit or the cacher doesn't wish to use the cached |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2351 entry, ``None`` should be returned. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2352 |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2353 Else, a dict defining the cached result should be returned. The |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2354 dict may have the following keys: |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2355 |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2356 objs |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2357 An iterable of objects that should be sent to the client. That |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2358 iterable of objects is expected to be what the command function |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2359 would return if invoked or an equivalent representation thereof. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2360 """ |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2361 |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2362 def onobject(self, obj): |
40022
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2363 """Called when a new object is emitted from the command function. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2364 |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2365 Receives as its argument the object that was emitted from the |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2366 command function. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2367 |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2368 This method returns an iterator of objects to forward to the output |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2369 layer. The easiest implementation is a generator that just |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2370 ``yield obj``. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2371 """ |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2372 |
52475
c1674551c109
interfaces: add the missing `self` arg to the repository Protocol classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52474
diff
changeset
|
2373 def onfinished(self): |
40022
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2374 """Called after all objects have been emitted from the command function. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2375 |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2376 Implementations should return an iterator of objects to forward to |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2377 the output layer. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2378 |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2379 This method can be a generator. |
c537144fdbef
wireprotov2: support response caching
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40003
diff
changeset
|
2380 """ |