--- a/mercurial/localrepo.py Sun Aug 06 16:47:25 2017 -0700
+++ b/mercurial/localrepo.py Wed Aug 09 23:52:25 2017 -0700
@@ -49,6 +49,7 @@
phases,
pushkey,
pycompat,
+ repository,
repoview,
revset,
revsetlang,
@@ -144,43 +145,52 @@
'unbundle'}
legacycaps = moderncaps.union({'changegroupsubset'})
-class localpeer(peer.peerrepository):
+class localpeer(repository.peer):
'''peer for a local repo; reflects only the most recent API'''
def __init__(self, repo, caps=None):
+ super(localpeer, self).__init__()
+
if caps is None:
caps = moderncaps.copy()
- peer.peerrepository.__init__(self)
self._repo = repo.filtered('served')
- self.ui = repo.ui
+ self._ui = repo.ui
self._caps = repo._restrictcapabilities(caps)
+ # Begin of _basepeer interface.
+
+ @util.propertycache
+ def ui(self):
+ return self._ui
+
+ def url(self):
+ return self._repo.url()
+
+ def local(self):
+ return self._repo
+
+ def peer(self):
+ return self
+
+ def canpush(self):
+ return True
+
def close(self):
self._repo.close()
- def _capabilities(self):
- return self._caps
-
- def local(self):
- return self._repo
+ # End of _basepeer interface.
- def canpush(self):
- return True
-
- def url(self):
- return self._repo.url()
-
- def lookup(self, key):
- return self._repo.lookup(key)
+ # Begin of _basewirecommands interface.
def branchmap(self):
return self._repo.branchmap()
- def heads(self):
- return self._repo.heads()
+ def capabilities(self):
+ return self._caps
- def known(self, nodes):
- return self._repo.known(nodes)
+ def debugwireargs(self, one, two, three=None, four=None, five=None):
+ """Used to test argument passing over the wire"""
+ return "%s %s %s %s %s" % (one, two, three, four, five)
def getbundle(self, source, heads=None, common=None, bundlecaps=None,
**kwargs):
@@ -197,8 +207,24 @@
else:
return changegroup.getunbundler('01', cb, None)
- # TODO We might want to move the next two calls into legacypeer and add
- # unbundle instead.
+ def heads(self):
+ return self._repo.heads()
+
+ def known(self, nodes):
+ return self._repo.known(nodes)
+
+ def listkeys(self, namespace):
+ return self._repo.listkeys(namespace)
+
+ def lookup(self, key):
+ return self._repo.lookup(key)
+
+ def pushkey(self, namespace, key, old, new):
+ return self._repo.pushkey(namespace, key, old, new)
+
+ def stream_out(self):
+ raise error.Abort(_('cannot perform stream clone against local '
+ 'peer'))
def unbundle(self, cg, heads, url):
"""apply a bundle on a repo
@@ -235,35 +261,38 @@
except error.PushRaced as exc:
raise error.ResponseError(_('push failed:'), str(exc))
- def pushkey(self, namespace, key, old, new):
- return self._repo.pushkey(namespace, key, old, new)
+ # End of _basewirecommands interface.
- def listkeys(self, namespace):
- return self._repo.listkeys(namespace)
+ # Begin of peer interface.
- def debugwireargs(self, one, two, three=None, four=None, five=None):
- '''used to test argument passing over the wire'''
- return "%s %s %s %s %s" % (one, two, three, four, five)
+ def iterbatch(self):
+ return peer.localiterbatcher(self)
-class locallegacypeer(localpeer):
+ # End of peer interface.
+
+class locallegacypeer(repository.legacypeer, localpeer):
'''peer extension which implements legacy methods too; used for tests with
restricted capabilities'''
def __init__(self, repo):
- localpeer.__init__(self, repo, caps=legacycaps)
+ super(locallegacypeer, self).__init__(repo, caps=legacycaps)
+
+ # Begin of baselegacywirecommands interface.
+
+ def between(self, pairs):
+ return self._repo.between(pairs)
def branches(self, nodes):
return self._repo.branches(nodes)
- def between(self, pairs):
- return self._repo.between(pairs)
-
def changegroup(self, basenodes, source):
return changegroup.changegroup(self._repo, basenodes, source)
def changegroupsubset(self, bases, heads, source):
return changegroup.changegroupsubset(self._repo, bases, heads, source)
+ # End of baselegacywirecommands interface.
+
# Increment the sub-version when the revlog v2 format changes to lock out old
# clients.
REVLOGV2_REQUIREMENT = 'exp-revlogv2.0'