[PATCH 6 of 9 RFC] localrepo: support retrieving raw pushkeys
Gregory Szorc
gregory.szorc at gmail.com
Sun Aug 14 17:10:05 EDT 2016
# HG changeset patch
# User Gregory Szorc <gregory.szorc at gmail.com>
# Date 1471207051 25200
# Sun Aug 14 13:37:31 2016 -0700
# Node ID 1fe812eb8b9e79d1182c4a6593e7ce8fa2938264
# Parent a94e1b0bb3ba0f6b0a3e62d5daece6a5f9ff295c
localrepo: support retrieving raw pushkeys
Now that we have pushkey support for retrieving raw values,
wire support for calling it into repo instances.
diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -200,18 +200,18 @@ class localpeer(peer.peerrepository):
return self._repo.lock()
def addchangegroup(self, cg, source, url):
return cg.apply(self._repo, source, url)
def pushkey(self, namespace, key, old, new):
return self._repo.pushkey(namespace, key, old, new)
- def listkeys(self, namespace):
- return self._repo.listkeys(namespace)
+ def listkeys(self, namespace, raw=False):
+ return self._repo.listkeys(namespace, raw=raw)
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)
class locallegacypeer(localpeer):
'''peer extension which implements legacy methods too; used for tests with
restricted capabilities'''
@@ -1902,21 +1902,28 @@ class localrepository(object):
self.ui.debug('pushing key for "%s:%s"\n' % (namespace, key))
ret = pushkey.push(self, namespace, key, old, new)
def runhook():
self.hook('pushkey', namespace=namespace, key=key, old=old, new=new,
ret=ret)
self._afterlock(runhook)
return ret
- def listkeys(self, namespace):
+ def listkeys(self, namespace, raw=False):
self.hook('prelistkeys', throw=True, namespace=namespace)
self.ui.debug('listing keys for "%s"\n' % namespace)
values = pushkey.list(self, namespace)
self.hook('listkeys', namespace=namespace, values=values)
+
+ # Hooks above always receive the non-raw values for BC reasons.
+ # Unfortunately for performance, this means we have to obtain
+ # both the raw and non-raw forms if raw data is requested.
+ if raw:
+ values = pushkey.listraw(self, namespace)
+
return values
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 savecommitmessage(self, text):
fp = self.vfs('last-message.txt', 'wb')
diff --git a/tests/test-obsolete.t b/tests/test-obsolete.t
--- a/tests/test-obsolete.t
+++ b/tests/test-obsolete.t
@@ -12,19 +12,19 @@
> }
$ getid() {
> hg log -T "{node}\n" --hidden -r "desc('$1')"
> }
$ cat > debugkeys.py <<EOF
> def reposetup(ui, repo):
> class debugkeysrepo(repo.__class__):
- > def listkeys(self, namespace):
+ > def listkeys(self, namespace, raw=False):
> ui.write('listkeys %s\n' % (namespace,))
- > return super(debugkeysrepo, self).listkeys(namespace)
+ > return super(debugkeysrepo, self).listkeys(namespace, raw=raw)
>
> if repo.local():
> repo.__class__ = debugkeysrepo
> EOF
$ hg init tmpa
$ cd tmpa
$ mkcommit kill_me
More information about the Mercurial-devel
mailing list