Show More
@@ -49,6 +49,7 b' from . import (' | |||
|
49 | 49 | phases, |
|
50 | 50 | pushkey, |
|
51 | 51 | pycompat, |
|
52 | repository, | |
|
52 | 53 | repoview, |
|
53 | 54 | revset, |
|
54 | 55 | revsetlang, |
@@ -144,43 +145,52 b" moderncaps = {'lookup', 'branchmap', 'pu" | |||
|
144 | 145 | 'unbundle'} |
|
145 | 146 | legacycaps = moderncaps.union({'changegroupsubset'}) |
|
146 | 147 | |
|
147 |
class localpeer(peer |
|
|
148 | class localpeer(repository.peer): | |
|
148 | 149 | '''peer for a local repo; reflects only the most recent API''' |
|
149 | 150 | |
|
150 | 151 | def __init__(self, repo, caps=None): |
|
152 | super(localpeer, self).__init__() | |
|
153 | ||
|
151 | 154 | if caps is None: |
|
152 | 155 | caps = moderncaps.copy() |
|
153 | peer.peerrepository.__init__(self) | |
|
154 | 156 | self._repo = repo.filtered('served') |
|
155 | self.ui = repo.ui | |
|
157 | self._ui = repo.ui | |
|
156 | 158 | self._caps = repo._restrictcapabilities(caps) |
|
157 | 159 | |
|
160 | # Begin of _basepeer interface. | |
|
161 | ||
|
162 | @util.propertycache | |
|
163 | def ui(self): | |
|
164 | return self._ui | |
|
165 | ||
|
166 | def url(self): | |
|
167 | return self._repo.url() | |
|
168 | ||
|
169 | def local(self): | |
|
170 | return self._repo | |
|
171 | ||
|
172 | def peer(self): | |
|
173 | return self | |
|
174 | ||
|
175 | def canpush(self): | |
|
176 | return True | |
|
177 | ||
|
158 | 178 | def close(self): |
|
159 | 179 | self._repo.close() |
|
160 | 180 | |
|
161 | def _capabilities(self): | |
|
162 | return self._caps | |
|
163 | ||
|
164 | def local(self): | |
|
165 | return self._repo | |
|
181 | # End of _basepeer interface. | |
|
166 | 182 | |
|
167 | def canpush(self): | |
|
168 | return True | |
|
169 | ||
|
170 | def url(self): | |
|
171 | return self._repo.url() | |
|
172 | ||
|
173 | def lookup(self, key): | |
|
174 | return self._repo.lookup(key) | |
|
183 | # Begin of _basewirecommands interface. | |
|
175 | 184 | |
|
176 | 185 | def branchmap(self): |
|
177 | 186 | return self._repo.branchmap() |
|
178 | 187 | |
|
179 |
def |
|
|
180 |
return self._ |
|
|
188 | def capabilities(self): | |
|
189 | return self._caps | |
|
181 | 190 | |
|
182 | def known(self, nodes): | |
|
183 | return self._repo.known(nodes) | |
|
191 | def debugwireargs(self, one, two, three=None, four=None, five=None): | |
|
192 | """Used to test argument passing over the wire""" | |
|
193 | return "%s %s %s %s %s" % (one, two, three, four, five) | |
|
184 | 194 | |
|
185 | 195 | def getbundle(self, source, heads=None, common=None, bundlecaps=None, |
|
186 | 196 | **kwargs): |
@@ -197,8 +207,24 b' class localpeer(peer.peerrepository):' | |||
|
197 | 207 | else: |
|
198 | 208 | return changegroup.getunbundler('01', cb, None) |
|
199 | 209 | |
|
200 | # TODO We might want to move the next two calls into legacypeer and add | |
|
201 | # unbundle instead. | |
|
210 | def heads(self): | |
|
211 | return self._repo.heads() | |
|
212 | ||
|
213 | def known(self, nodes): | |
|
214 | return self._repo.known(nodes) | |
|
215 | ||
|
216 | def listkeys(self, namespace): | |
|
217 | return self._repo.listkeys(namespace) | |
|
218 | ||
|
219 | def lookup(self, key): | |
|
220 | return self._repo.lookup(key) | |
|
221 | ||
|
222 | def pushkey(self, namespace, key, old, new): | |
|
223 | return self._repo.pushkey(namespace, key, old, new) | |
|
224 | ||
|
225 | def stream_out(self): | |
|
226 | raise error.Abort(_('cannot perform stream clone against local ' | |
|
227 | 'peer')) | |
|
202 | 228 | |
|
203 | 229 | def unbundle(self, cg, heads, url): |
|
204 | 230 | """apply a bundle on a repo |
@@ -235,35 +261,38 b' class localpeer(peer.peerrepository):' | |||
|
235 | 261 | except error.PushRaced as exc: |
|
236 | 262 | raise error.ResponseError(_('push failed:'), str(exc)) |
|
237 | 263 | |
|
238 | def pushkey(self, namespace, key, old, new): | |
|
239 | return self._repo.pushkey(namespace, key, old, new) | |
|
264 | # End of _basewirecommands interface. | |
|
240 | 265 | |
|
241 | def listkeys(self, namespace): | |
|
242 | return self._repo.listkeys(namespace) | |
|
266 | # Begin of peer interface. | |
|
243 | 267 | |
|
244 | def debugwireargs(self, one, two, three=None, four=None, five=None): | |
|
245 | '''used to test argument passing over the wire''' | |
|
246 | return "%s %s %s %s %s" % (one, two, three, four, five) | |
|
268 | def iterbatch(self): | |
|
269 | return peer.localiterbatcher(self) | |
|
247 | 270 | |
|
248 | class locallegacypeer(localpeer): | |
|
271 | # End of peer interface. | |
|
272 | ||
|
273 | class locallegacypeer(repository.legacypeer, localpeer): | |
|
249 | 274 | '''peer extension which implements legacy methods too; used for tests with |
|
250 | 275 | restricted capabilities''' |
|
251 | 276 | |
|
252 | 277 | def __init__(self, repo): |
|
253 |
localpeer.__init__( |
|
|
278 | super(locallegacypeer, self).__init__(repo, caps=legacycaps) | |
|
279 | ||
|
280 | # Begin of baselegacywirecommands interface. | |
|
281 | ||
|
282 | def between(self, pairs): | |
|
283 | return self._repo.between(pairs) | |
|
254 | 284 | |
|
255 | 285 | def branches(self, nodes): |
|
256 | 286 | return self._repo.branches(nodes) |
|
257 | 287 | |
|
258 | def between(self, pairs): | |
|
259 | return self._repo.between(pairs) | |
|
260 | ||
|
261 | 288 | def changegroup(self, basenodes, source): |
|
262 | 289 | return changegroup.changegroup(self._repo, basenodes, source) |
|
263 | 290 | |
|
264 | 291 | def changegroupsubset(self, bases, heads, source): |
|
265 | 292 | return changegroup.changegroupsubset(self._repo, bases, heads, source) |
|
266 | 293 | |
|
294 | # End of baselegacywirecommands interface. | |
|
295 | ||
|
267 | 296 | # Increment the sub-version when the revlog v2 format changes to lock out old |
|
268 | 297 | # clients. |
|
269 | 298 | REVLOGV2_REQUIREMENT = 'exp-revlogv2.0' |
General Comments 0
You need to be logged in to leave comments.
Login now