Mercurial > public > mercurial-scm > hg
annotate mercurial/repository.py @ 37440:4335a75f0bd0
repository: define existing interface for file storage
Now that we have mostly successfully implemented an alternate
storage backend for files data, let's start to define the
interface for it!
This commit takes the mostly-working interface as defined by the
simple store repo and codifies it as the file storage interface.
The interface has been split into its logical components:
* index metadata
* fulltext data
* mutation
* everything else
I don't consider the existing interface to be great. But it will
help to have it more formally defined so we can start chipping away
at refactoring it.
Differential Revision: https://phab.mercurial-scm.org/D3148
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Thu, 05 Apr 2018 15:09:41 -0700 |
parents | fdd22bf6398f |
children | 98861a2298b5 |
rev | line source |
---|---|
33800
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. |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
2 # |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
3 # 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
|
4 # |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
5 # 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
|
6 # 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
|
7 |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
8 from __future__ import absolute_import |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
9 |
33802
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33801
diff
changeset
|
10 from .i18n import _ |
37181
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
11 from .thirdparty.zope import ( |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
12 interface as zi, |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
13 ) |
33802
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33801
diff
changeset
|
14 from . import ( |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33801
diff
changeset
|
15 error, |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33801
diff
changeset
|
16 ) |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33801
diff
changeset
|
17 |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
18 class ipeerconnection(zi.Interface): |
33800
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
19 """Represents a "connection" to a repository. |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
20 |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
21 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
|
22 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
|
23 |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
24 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
|
25 outside of this module. |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
26 """ |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
27 ui = zi.Attribute("""ui.ui instance""") |
33800
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
28 |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
29 def url(): |
33800
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
30 """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
|
31 |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
32 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
|
33 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
|
34 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
|
35 data leakage. |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
36 |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
37 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
|
38 value. |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
39 """ |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
40 |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
41 def local(): |
33800
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
42 """Returns a local repository instance. |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
43 |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
44 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
|
45 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
|
46 """ |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
47 |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
48 def peer(): |
33800
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
49 """Returns an object conforming to this interface. |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
50 |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
51 Most implementations will ``return self``. |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
52 """ |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
53 |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
54 def canpush(): |
33800
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
55 """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
|
56 |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
57 def close(): |
33800
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
58 """Close the connection to this peer. |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
59 |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
60 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
|
61 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
|
62 """ |
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
63 |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
64 class ipeercommands(zi.Interface): |
33801
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
65 """Client-side interface for communicating over the wire protocol. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
66 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
67 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:
33800
diff
changeset
|
68 methods commonly call wire protocol commands of the same name. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
69 """ |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
70 |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
71 def branchmap(): |
33801
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
72 """Obtain heads in named branches. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
73 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
74 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:
33800
diff
changeset
|
75 heads on that branch. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
76 """ |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
77 |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
78 def capabilities(): |
33801
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
79 """Obtain capabilities of the peer. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
80 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
81 Returns a set of string capabilities. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
82 """ |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
83 |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
84 def debugwireargs(one, two, three=None, four=None, five=None): |
33801
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
85 """Used to facilitate debugging of arguments passed over the wire.""" |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
86 |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
87 def getbundle(source, **kwargs): |
33801
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
88 """Obtain remote repository data as a bundle. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
89 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
90 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:
33800
diff
changeset
|
91 the peer to the local repository |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
92 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
93 Returns a generator of bundle data. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
94 """ |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
95 |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
96 def heads(): |
33801
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
97 """Determine all known head revisions in the peer. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
98 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
99 Returns an iterable of binary nodes. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
100 """ |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
101 |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
102 def known(nodes): |
33801
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
103 """Determine whether multiple nodes are known. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
104 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
105 Accepts an iterable of nodes whose presence to check for. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
106 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
107 Returns an iterable of booleans indicating of the corresponding node |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
108 at that index is known to the peer. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
109 """ |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
110 |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
111 def listkeys(namespace): |
33801
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
112 """Obtain all keys in a pushkey namespace. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
113 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
114 Returns an iterable of key names. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
115 """ |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
116 |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
117 def lookup(key): |
33801
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
118 """Resolve a value to a known revision. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
119 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
120 Returns a binary node of the resolved revision on success. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
121 """ |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
122 |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
123 def pushkey(namespace, key, old, new): |
33801
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
124 """Set a value using the ``pushkey`` protocol. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
125 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
126 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:
33800
diff
changeset
|
127 the old and new values for that key. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
128 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
129 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:
33800
diff
changeset
|
130 namespace. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
131 """ |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
132 |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
133 def stream_out(): |
33801
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
134 """Obtain streaming clone data. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
135 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
136 Successful result should be a generator of data chunks. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
137 """ |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
138 |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
139 def unbundle(bundle, heads, url): |
33801
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
140 """Transfer repository data to the peer. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
141 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
142 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:
33800
diff
changeset
|
143 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
144 Returns the integer number of heads added to the peer. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
145 """ |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
146 |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
147 class ipeerlegacycommands(zi.Interface): |
33801
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
148 """Interface for implementing support for legacy wire protocol commands. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
149 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
150 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:
33800
diff
changeset
|
151 used by modern clients. To facilitate identifying which commands are |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
152 legacy, the interfaces are split. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
153 """ |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
154 |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
155 def between(pairs): |
33801
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
156 """Obtain nodes between pairs of nodes. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
157 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
158 ``pairs`` is an iterable of node pairs. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
159 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
160 Returns an iterable of iterables of nodes corresponding to each |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
161 requested pair. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
162 """ |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
163 |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
164 def branches(nodes): |
33801
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
165 """Obtain ancestor changesets of specific nodes back to a branch point. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
166 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
167 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:
33800
diff
changeset
|
168 a DAG root or is a merge. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
169 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
170 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:
33800
diff
changeset
|
171 """ |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
172 |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
173 def changegroup(nodes, kind): |
33801
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
174 """Obtain a changegroup with data for descendants of specified nodes.""" |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
175 |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
176 def changegroupsubset(bases, heads, kind): |
33801
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
177 pass |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
178 |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
179 class ipeerbase(ipeerconnection, ipeercommands): |
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
180 """Unified interface for peer repositories. |
33800
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
181 |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
182 All peer instances must conform to this interface. |
33800
f257943e47ab
repository: formalize peer interface with abstract base class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
183 """ |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
184 def iterbatch(): |
33801
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
185 """Obtain an object to be used for multiple method calls. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
186 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
187 Various operations call several methods on peer instances. If each |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
188 method call were performed immediately and serially, this would |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
189 require round trips to remote peers and/or would slow down execution. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
190 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
191 Some peers have the ability to "batch" method calls to avoid costly |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
192 round trips or to facilitate concurrent execution. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
193 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
194 This method returns an object that can be used to indicate intent to |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
195 perform batched method calls. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
196 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
197 The returned object is a proxy of this peer. It intercepts calls to |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
198 batchable methods and queues them instead of performing them |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
199 immediately. This proxy object has a ``submit`` method that will |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
200 perform all queued batchable method calls. A ``results()`` method |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
201 exposes the results of queued/batched method calls. It is a generator |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
202 of results in the order they were called. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
203 |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
204 Not all peers or wire protocol implementations may actually batch method |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
205 calls. However, they must all support this API. |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
206 """ |
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
207 |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
208 def capable(name): |
33802
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33801
diff
changeset
|
209 """Determine support for a named capability. |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33801
diff
changeset
|
210 |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33801
diff
changeset
|
211 Returns ``False`` if capability not supported. |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33801
diff
changeset
|
212 |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33801
diff
changeset
|
213 Returns ``True`` if boolean capability is supported. Returns a string |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33801
diff
changeset
|
214 if capability support is non-boolean. |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33801
diff
changeset
|
215 """ |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
216 |
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
217 def requirecap(name, purpose): |
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
218 """Require a capability to be present. |
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
219 |
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
220 Raises a ``CapabilityError`` if the capability isn't present. |
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
221 """ |
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
222 |
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
223 class ipeerbaselegacycommands(ipeerbase, ipeerlegacycommands): |
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
224 """Unified peer interface that supports legacy commands.""" |
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
225 |
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
226 @zi.implementer(ipeerbase) |
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
227 class peer(object): |
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
228 """Base class for peer repositories.""" |
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
229 |
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
230 def capable(self, name): |
33802
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33801
diff
changeset
|
231 caps = self.capabilities() |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33801
diff
changeset
|
232 if name in caps: |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33801
diff
changeset
|
233 return True |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33801
diff
changeset
|
234 |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33801
diff
changeset
|
235 name = '%s=' % name |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33801
diff
changeset
|
236 for cap in caps: |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33801
diff
changeset
|
237 if cap.startswith(name): |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33801
diff
changeset
|
238 return cap[len(name):] |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33801
diff
changeset
|
239 |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33801
diff
changeset
|
240 return False |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33801
diff
changeset
|
241 |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33801
diff
changeset
|
242 def requirecap(self, name, purpose): |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33801
diff
changeset
|
243 if self.capable(name): |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33801
diff
changeset
|
244 return |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33801
diff
changeset
|
245 |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33801
diff
changeset
|
246 raise error.CapabilityError( |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33801
diff
changeset
|
247 _('cannot %s; remote repository does not support the %r ' |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33801
diff
changeset
|
248 'capability') % (purpose, name)) |
a0aad86b3b6a
repository: implement generic capability methods on peer class
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33801
diff
changeset
|
249 |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
250 @zi.implementer(ipeerbaselegacycommands) |
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37316
diff
changeset
|
251 class legacypeer(peer): |
33801
558f5b2ee10e
repository: formalize wire protocol interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33800
diff
changeset
|
252 """peer but with support for legacy wire protocol commands.""" |
37181
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
253 |
37440
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
254 class ifilerevisionssequence(zi.Interface): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
255 """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
|
256 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
257 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
|
258 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
|
259 index metadata. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
260 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
261 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
|
262 in the index. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
263 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
264 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
265 def __len__(): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
266 """The total number of revisions.""" |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
267 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
268 def __getitem__(rev): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
269 """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
|
270 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
271 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
|
272 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
273 offset+flags |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
274 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
|
275 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
|
276 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
|
277 compressed size |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
278 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
|
279 needed by the store. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
280 uncompressed size |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
281 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
|
282 base revision |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
283 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
|
284 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
|
285 link revision |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
286 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
|
287 p1 revision |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
288 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
|
289 p2 revision |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
290 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
|
291 node |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
292 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
|
293 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
294 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
|
295 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
|
296 recent revision. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
297 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
298 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
299 def __contains__(rev): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
300 """Whether a revision number exists.""" |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
301 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
302 def insert(self, i, entry): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
303 """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
|
304 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
305 class ifileindex(zi.Interface): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
306 """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
|
307 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
308 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
|
309 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
|
310 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
311 The index logically consists of: |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
312 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
313 * 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
|
314 * 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
|
315 * Metadata to facilitate storage. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
316 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
317 index = zi.Attribute( |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
318 """An ``ifilerevisionssequence`` instance.""") |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
319 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
320 def __len__(): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
321 """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
|
322 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
323 def __iter__(): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
324 """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
|
325 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
326 def revs(start=0, stop=None): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
327 """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
|
328 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
329 def parents(node): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
330 """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
|
331 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
332 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
|
333 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
334 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
335 def parentrevs(rev): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
336 """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
|
337 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
338 def rev(node): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
339 """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
|
340 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
341 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
|
342 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
343 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
344 def node(rev): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
345 """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
|
346 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
347 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
|
348 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
349 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
350 def lookup(node): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
351 """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
|
352 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
353 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
|
354 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
|
355 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
356 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
|
357 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
358 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
359 def linkrev(rev): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
360 """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
|
361 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
362 def flags(rev): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
363 """Obtain flags used to affect storage of a revision.""" |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
364 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
365 def iscensored(rev): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
366 """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
|
367 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
368 def commonancestorsheads(node1, node2): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
369 """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
|
370 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
371 See ``ancestor.commonancestorsheads()``. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
372 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
373 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
374 def descendants(revs): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
375 """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
|
376 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
377 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
|
378 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
379 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
380 def headrevs(): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
381 """Obtain a list of revision numbers that are DAG heads. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
382 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
383 The list is sorted oldest to newest. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
384 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
385 TODO determine if sorting is required. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
386 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
387 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
388 def heads(start=None, stop=None): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
389 """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
|
390 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
391 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
|
392 ``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
|
393 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
|
394 ``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
|
395 encountered. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
396 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
397 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
398 def children(node): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
399 """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
|
400 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
401 Returns a list of nodes. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
402 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
403 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
404 def deltaparent(rev): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
405 """"Return the revision that is a suitable parent to delta against.""" |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
406 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
407 def candelta(baserev, rev): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
408 """"Whether a delta can be generated between two revisions.""" |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
409 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
410 class ifiledata(zi.Interface): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
411 """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
|
412 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
413 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
|
414 data for a tracked file. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
415 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
416 def rawsize(rev): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
417 """The size of the fulltext data for a revision as stored.""" |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
418 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
419 def size(rev): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
420 """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
|
421 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
422 Any metadata is excluded from size measurements. Use ``rawsize()`` if |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
423 metadata size is important. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
424 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
425 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
426 def checkhash(fulltext, node, p1=None, p2=None, rev=None): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
427 """Validate the stored hash of a given fulltext and node. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
428 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
429 Raises ``error.RevlogError`` is hash validation fails. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
430 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
431 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
432 def revision(node, raw=False): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
433 """"Obtain fulltext data for a node. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
434 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
435 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
|
436 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
|
437 are not applied. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
438 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
439 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
|
440 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
|
441 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
442 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
443 def read(node): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
444 """Resolve file fulltext data. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
445 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
446 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
|
447 headers is stripped. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
448 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
449 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
450 def renamed(node): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
451 """Obtain copy metadata for a node. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
452 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
453 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
|
454 (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
|
455 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
456 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
457 def cmp(node, fulltext): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
458 """Compare fulltext to another revision. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
459 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
460 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
|
461 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
462 This takes copy metadata into account. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
463 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
464 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
|
465 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
466 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
467 def revdiff(rev1, rev2): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
468 """Obtain a delta between two revision numbers. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
469 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
470 Operates on raw data in the store (``revision(node, raw=True)``). |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
471 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
472 The returned data is the result of ``bdiff.bdiff`` on the raw |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
473 revision data. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
474 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
475 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
476 class ifilemutation(zi.Interface): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
477 """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
|
478 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
479 def add(filedata, meta, transaction, linkrev, p1, p2): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
480 """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
|
481 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
482 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
|
483 and parent nodes. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
484 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
485 Returns the node that was added. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
486 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
487 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
|
488 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
489 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
490 def addrevision(revisiondata, transaction, linkrev, p1, p2, node=None, |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
491 flags=0, cachedelta=None): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
492 """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
|
493 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
494 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
|
495 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
496 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
|
497 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
498 ``node`` and ``flags`` can be used to define the expected node and |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
499 the flags to use with storage. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
500 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
501 ``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
|
502 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
|
503 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
|
504 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
|
505 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
506 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
507 def addgroup(deltas, linkmapper, transaction, addrevisioncb=None): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
508 """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
|
509 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
510 ``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
|
511 (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
|
512 to add. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
513 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
514 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
|
515 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
|
516 ``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
|
517 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
|
518 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
519 ``addrevisioncb`` should be called for each node as it is committed. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
520 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
521 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
|
522 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
|
523 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
524 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
525 def getstrippoint(minlink): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
526 """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
|
527 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
528 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
|
529 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
|
530 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
531 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
|
532 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
|
533 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
534 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
535 def strip(minlink, transaction): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
536 """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
|
537 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
538 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
|
539 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
|
540 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
541 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
|
542 higher-level deletion API. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
543 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
544 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
545 class ifilestorage(ifileindex, ifiledata, ifilemutation): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
546 """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
|
547 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
548 version = zi.Attribute( |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
549 """Version number of storage. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
550 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
551 TODO this feels revlog centric and could likely be removed. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
552 """) |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
553 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
554 storedeltachains = zi.Attribute( |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
555 """Whether the store stores deltas. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
556 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
557 TODO deltachains are revlog centric. This can probably removed |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
558 once there are better abstractions for obtaining/writing |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
559 data. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
560 """) |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
561 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
562 _generaldelta = zi.Attribute( |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
563 """Whether deltas can be against any parent revision. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
564 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
565 TODO this is used by changegroup code and it could probably be |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
566 folded into another API. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
567 """) |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
568 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
569 def files(): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
570 """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
|
571 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
572 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
|
573 be a better API for that. |
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 |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
576 def checksize(): |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
577 """Obtain the expected sizes of backing files. |
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 TODO this is used by verify and it should not be part of the interface. |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
580 """ |
4335a75f0bd0
repository: define existing interface for file storage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37351
diff
changeset
|
581 |
37181
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
582 class completelocalrepository(zi.Interface): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
583 """Monolithic interface for local repositories. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
584 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
585 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:
33802
diff
changeset
|
586 """ |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
587 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
588 supportedformats = zi.Attribute( |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
589 """Set of requirements that apply to stream clone. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
590 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
591 This is actually a class attribute and is shared among all instances. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
592 """) |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
593 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
594 openerreqs = zi.Attribute( |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
595 """Set of requirements that are passed to the opener. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
596 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
597 This is actually a class attribute and is shared among all instances. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
598 """) |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
599 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
600 supported = zi.Attribute( |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
601 """Set of requirements that this repo is capable of opening.""") |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
602 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
603 requirements = zi.Attribute( |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
604 """Set of requirements this repo uses.""") |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
605 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
606 filtername = zi.Attribute( |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
607 """Name of the repoview that is active on this repo.""") |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
608 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
609 wvfs = zi.Attribute( |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
610 """VFS used to access the working directory.""") |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
611 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
612 vfs = zi.Attribute( |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
613 """VFS rooted at the .hg directory. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
614 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
615 Used to access repository data not in the store. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
616 """) |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
617 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
618 svfs = zi.Attribute( |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
619 """VFS rooted at the store. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
620 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
621 Used to access repository data in the store. Typically .hg/store. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
622 But can point elsewhere if the store is shared. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
623 """) |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
624 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
625 root = zi.Attribute( |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
626 """Path to the root of the working directory.""") |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
627 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
628 path = zi.Attribute( |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
629 """Path to the .hg directory.""") |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
630 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
631 origroot = zi.Attribute( |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
632 """The filesystem path that was used to construct the repo.""") |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
633 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
634 auditor = zi.Attribute( |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
635 """A pathauditor for the working directory. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
636 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
637 This checks if a path refers to a nested repository. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
638 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
639 Operates on the filesystem. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
640 """) |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
641 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
642 nofsauditor = zi.Attribute( |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
643 """A pathauditor for the working directory. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
644 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
645 This is like ``auditor`` except it doesn't do filesystem checks. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
646 """) |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
647 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
648 baseui = zi.Attribute( |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
649 """Original ui instance passed into constructor.""") |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
650 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
651 ui = zi.Attribute( |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
652 """Main ui instance for this instance.""") |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
653 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
654 sharedpath = zi.Attribute( |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
655 """Path to the .hg directory of the repo this repo was shared from.""") |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
656 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
657 store = zi.Attribute( |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
658 """A store instance.""") |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
659 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
660 spath = zi.Attribute( |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
661 """Path to the store.""") |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
662 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
663 sjoin = zi.Attribute( |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
664 """Alias to self.store.join.""") |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
665 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
666 cachevfs = zi.Attribute( |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
667 """A VFS used to access the cache directory. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
668 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
669 Typically .hg/cache. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
670 """) |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
671 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
672 filteredrevcache = zi.Attribute( |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
673 """Holds sets of revisions to be filtered.""") |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
674 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
675 names = zi.Attribute( |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
676 """A ``namespaces`` instance.""") |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
677 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
678 def close(): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
679 """Close the handle on this repository.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
680 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
681 def peer(): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
682 """Obtain an object conforming to the ``peer`` interface.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
683 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
684 def unfiltered(): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
685 """Obtain an unfiltered/raw view of this repo.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
686 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
687 def filtered(name, visibilityexceptions=None): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
688 """Obtain a named view of this repository.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
689 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
690 obsstore = zi.Attribute( |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
691 """A store of obsolescence data.""") |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
692 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
693 changelog = zi.Attribute( |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
694 """A handle on the changelog revlog.""") |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
695 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
696 manifestlog = zi.Attribute( |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
697 """A handle on the root manifest revlog.""") |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
698 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
699 dirstate = zi.Attribute( |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
700 """Working directory state.""") |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
701 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
702 narrowpats = zi.Attribute( |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
703 """Matcher patterns for this repository's narrowspec.""") |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
704 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
705 def narrowmatch(): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
706 """Obtain a matcher for the narrowspec.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
707 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
708 def setnarrowpats(newincludes, newexcludes): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
709 """Define the narrowspec for this repository.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
710 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
711 def __getitem__(changeid): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
712 """Try to resolve a changectx.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
713 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
714 def __contains__(changeid): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
715 """Whether a changeset exists.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
716 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
717 def __nonzero__(): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
718 """Always returns True.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
719 return True |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
720 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
721 __bool__ = __nonzero__ |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
722 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
723 def __len__(): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
724 """Returns the number of changesets in the repo.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
725 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
726 def __iter__(): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
727 """Iterate over revisions in the changelog.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
728 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
729 def revs(expr, *args): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
730 """Evaluate a revset. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
731 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
732 Emits revisions. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
733 """ |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
734 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
735 def set(expr, *args): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
736 """Evaluate a revset. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
737 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
738 Emits changectx instances. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
739 """ |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
740 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
741 def anyrevs(specs, user=False, localalias=None): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
742 """Find revisions matching one of the given revsets.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
743 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
744 def url(): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
745 """Returns a string representing the location of this repo.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
746 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
747 def hook(name, throw=False, **args): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
748 """Call a hook.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
749 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
750 def tags(): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
751 """Return a mapping of tag to node.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
752 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
753 def tagtype(tagname): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
754 """Return the type of a given tag.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
755 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
756 def tagslist(): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
757 """Return a list of tags ordered by revision.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
758 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
759 def nodetags(node): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
760 """Return the tags associated with a node.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
761 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
762 def nodebookmarks(node): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
763 """Return the list of bookmarks pointing to the specified node.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
764 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
765 def branchmap(): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
766 """Return a mapping of branch to heads in that branch.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
767 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
768 def revbranchcache(): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
769 pass |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
770 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
771 def branchtip(branchtip, ignoremissing=False): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
772 """Return the tip node for a given branch.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
773 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
774 def lookup(key): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
775 """Resolve the node for a revision.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
776 |
37351
fdd22bf6398f
localrepo: drop "remote" argument from lookupbranch() (API)
Martin von Zweigbergk <martinvonz@google.com>
parents:
37320
diff
changeset
|
777 def lookupbranch(key): |
37181
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
778 """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:
33802
diff
changeset
|
779 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
780 def known(nodes): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
781 """Determine whether a series of nodes is known. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
782 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
783 Returns a list of bools. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
784 """ |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
785 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
786 def local(): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
787 """Whether the repository is local.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
788 return True |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
789 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
790 def publishing(): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
791 """Whether the repository is a publishing repository.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
792 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
793 def cancopy(): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
794 pass |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
795 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
796 def shared(): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
797 """The type of shared repository or None.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
798 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
799 def wjoin(f, *insidef): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
800 """Calls self.vfs.reljoin(self.root, f, *insidef)""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
801 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
802 def file(f): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
803 """Obtain a filelog for a tracked path.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
804 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
805 def setparents(p1, p2): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
806 """Set the parent nodes of the working directory.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
807 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
808 def filectx(path, changeid=None, fileid=None): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
809 """Obtain a filectx for the given file revision.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
810 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
811 def getcwd(): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
812 """Obtain the current working directory from the dirstate.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
813 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
814 def pathto(f, cwd=None): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
815 """Obtain the relative path to a file.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
816 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
817 def adddatafilter(name, fltr): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
818 pass |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
819 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
820 def wread(filename): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
821 """Read a file from wvfs, using data filters.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
822 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
823 def wwrite(filename, data, flags, backgroundclose=False, **kwargs): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
824 """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:
33802
diff
changeset
|
825 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
826 def wwritedata(filename, data): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
827 """Resolve data for writing to the wvfs, using data filters.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
828 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
829 def currenttransaction(): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
830 """Obtain the current transaction instance or None.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
831 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
832 def transaction(desc, report=None): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
833 """Open a new transaction to write to the repository.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
834 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
835 def undofiles(): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
836 """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:
33802
diff
changeset
|
837 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
838 def recover(): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
839 """Roll back an interrupted transaction.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
840 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
841 def rollback(dryrun=False, force=False): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
842 """Undo the last transaction. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
843 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
844 DANGEROUS. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
845 """ |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
846 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
847 def updatecaches(tr=None, full=False): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
848 """Warm repo caches.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
849 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
850 def invalidatecaches(): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
851 """Invalidate cached data due to the repository mutating.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
852 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
853 def invalidatevolatilesets(): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
854 pass |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
855 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
856 def invalidatedirstate(): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
857 """Invalidate the dirstate.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
858 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
859 def invalidate(clearfilecache=False): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
860 pass |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
861 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
862 def invalidateall(): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
863 pass |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
864 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
865 def lock(wait=True): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
866 """Lock the repository store and return a lock instance.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
867 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
868 def wlock(wait=True): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
869 """Lock the non-store parts of the repository.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
870 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
871 def currentwlock(): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
872 """Return the wlock if it's held or None.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
873 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
874 def checkcommitpatterns(wctx, vdirs, match, status, fail): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
875 pass |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
876 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
877 def commit(text='', user=None, date=None, match=None, force=False, |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
878 editor=False, extra=None): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
879 """Add a new revision to the repository.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
880 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
881 def commitctx(ctx, error=False): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
882 """Commit a commitctx instance to the repository.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
883 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
884 def destroying(): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
885 """Inform the repository that nodes are about to be destroyed.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
886 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
887 def destroyed(): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
888 """Inform the repository that nodes have been destroyed.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
889 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
890 def status(node1='.', node2=None, match=None, ignored=False, |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
891 clean=False, unknown=False, listsubrepos=False): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
892 """Convenience method to call repo[x].status().""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
893 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
894 def addpostdsstatus(ps): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
895 pass |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
896 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
897 def postdsstatus(): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
898 pass |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
899 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
900 def clearpostdsstatus(): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
901 pass |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
902 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
903 def heads(start=None): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
904 """Obtain list of nodes that are DAG heads.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
905 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
906 def branchheads(branch=None, start=None, closed=False): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
907 pass |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
908 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
909 def branches(nodes): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
910 pass |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
911 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
912 def between(pairs): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
913 pass |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
914 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
915 def checkpush(pushop): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
916 pass |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
917 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
918 prepushoutgoinghooks = zi.Attribute( |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
919 """util.hooks instance.""") |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
920 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
921 def pushkey(namespace, key, old, new): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
922 pass |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
923 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
924 def listkeys(namespace): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
925 pass |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
926 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
927 def debugwireargs(one, two, three=None, four=None, five=None): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
928 pass |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
929 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
930 def savecommitmessage(text): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33802
diff
changeset
|
931 pass |