Rev 6280: (jelmer) Add HPSS call for ``BzrDir.has_workingtree``. (Jelmer Vernooij) in file:///srv/pqm.bazaar-vcs.org/archives/thelove/bzr/%2Btrunk/
Patch Queue Manager
pqm at pqm.ubuntu.com
Fri Nov 18 15:57:51 UTC 2011
At file:///srv/pqm.bazaar-vcs.org/archives/thelove/bzr/%2Btrunk/
------------------------------------------------------------
revno: 6280 [merge]
revision-id: pqm at pqm.ubuntu.com-20111118155750-apia0a5k1mnt8qm8
parent: pqm at pqm.ubuntu.com-20111118121547-89qgigtpdix32fxw
parent: jelmer at samba.org-20111118143741-lt3pfabrhoou7dqe
committer: Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Fri 2011-11-18 15:57:50 +0000
message:
(jelmer) Add HPSS call for ``BzrDir.has_workingtree``. (Jelmer Vernooij)
modified:
bzrlib/remote.py remote.py-20060720103555-yeeg2x51vn0rbtdp-1
bzrlib/smart/bzrdir.py bzrdir.py-20061122024551-ol0l0o0oofsu9b3t-1
bzrlib/smart/request.py request.py-20061108095550-gunadhxmzkdjfeek-1
bzrlib/tests/test_remote.py test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
bzrlib/tests/test_smart.py test_smart.py-20061122024551-ol0l0o0oofsu9b3t-2
doc/en/release-notes/bzr-2.5.txt bzr2.5.txt-20110708125756-587p0hpw7oke4h05-1
=== modified file 'bzrlib/remote.py'
--- a/bzrlib/remote.py 2011-11-18 11:49:47 +0000
+++ b/bzrlib/remote.py 2011-11-18 14:37:41 +0000
@@ -672,8 +672,16 @@
def has_workingtree(self):
if self._has_working_tree is None:
- self._ensure_real()
- self._has_working_tree = self._real_bzrdir.has_workingtree()
+ path = self._path_for_remote_call(self._client)
+ try:
+ response = self._call('BzrDir.has_workingtree', path)
+ except errors.UnknownSmartMethod:
+ self._ensure_real()
+ self._has_working_tree = self._real_bzrdir.has_workingtree()
+ else:
+ if response[0] not in ('yes', 'no'):
+ raise SmartProtocolError('unexpected response code %s' % (response,))
+ self._has_working_tree = (response[0] == 'yes')
return self._has_working_tree
def open_workingtree(self, recommend_upgrade=True):
=== modified file 'bzrlib/smart/bzrdir.py'
--- a/bzrlib/smart/bzrdir.py 2011-11-17 10:59:40 +0000
+++ b/bzrlib/smart/bzrdir.py 2011-11-18 14:37:41 +0000
@@ -120,6 +120,22 @@
return '/'.join(segments)
+class SmartServerBzrDirRequestHasWorkingTree(SmartServerRequestBzrDir):
+
+ def do_bzrdir_request(self, name=None):
+ """Check whether there is a working tree present.
+
+ New in 2.5.0.
+
+ :return: If there is a working tree present, 'yes'.
+ Otherwise 'no'.
+ """
+ if self._bzrdir.has_workingtree():
+ return SuccessfulSmartServerResponse(('yes', ))
+ else:
+ return SuccessfulSmartServerResponse(('no', ))
+
+
class SmartServerBzrDirRequestDestroyRepository(SmartServerRequestBzrDir):
def do_bzrdir_request(self, name=None):
=== modified file 'bzrlib/smart/request.py'
--- a/bzrlib/smart/request.py 2011-11-18 11:49:47 +0000
+++ b/bzrlib/smart/request.py 2011-11-18 14:37:41 +0000
@@ -555,6 +555,9 @@
'BzrDir.get_config_file', 'bzrlib.smart.bzrdir',
'SmartServerBzrDirRequestConfigFile')
request_handlers.register_lazy(
+ 'BzrDir.has_workingtree', 'bzrlib.smart.bzrdir',
+ 'SmartServerBzrDirRequestHasWorkingTree')
+request_handlers.register_lazy(
'BzrDir.destroy_repository', 'bzrlib.smart.bzrdir',
'SmartServerBzrDirRequestDestroyRepository')
request_handlers.register_lazy(
=== modified file 'bzrlib/tests/test_remote.py'
--- a/bzrlib/tests/test_remote.py 2011-11-18 11:49:47 +0000
+++ b/bzrlib/tests/test_remote.py 2011-11-18 14:37:41 +0000
@@ -485,6 +485,31 @@
self.assertFinished(client)
+class TestBzrDirHasWorkingTree(TestRemote):
+
+ def test_has_workingtree(self):
+ transport = self.get_transport('quack')
+ client = FakeClient(transport.base)
+ client.add_expected_call(
+ 'BzrDir.has_workingtree', ('quack/',),
+ 'success', ('yes',)),
+ a_bzrdir = RemoteBzrDir(transport, RemoteBzrDirFormat(),
+ _client=client)
+ self.assertTrue(a_bzrdir.has_workingtree())
+ self.assertFinished(client)
+
+ def test_no_workingtree(self):
+ transport = self.get_transport('quack')
+ client = FakeClient(transport.base)
+ client.add_expected_call(
+ 'BzrDir.has_workingtree', ('quack/',),
+ 'success', ('no',)),
+ a_bzrdir = RemoteBzrDir(transport, RemoteBzrDirFormat(),
+ _client=client)
+ self.assertFalse(a_bzrdir.has_workingtree())
+ self.assertFinished(client)
+
+
class TestBzrDirDestroyRepository(TestRemote):
def test_destroy_repository(self):
=== modified file 'bzrlib/tests/test_smart.py'
--- a/bzrlib/tests/test_smart.py 2011-11-18 11:49:47 +0000
+++ b/bzrlib/tests/test_smart.py 2011-11-18 14:37:41 +0000
@@ -222,6 +222,29 @@
self.assertEqual(expected, request.execute('', 'False'))
+class TestSmartServerBzrDirRequestHasWorkingTree(
+ tests.TestCaseWithTransport):
+ """Tests for BzrDir.has_workingtree."""
+
+ def test_has_workingtree_yes(self):
+ """A working tree is present."""
+ backing = self.get_transport()
+ dir = self.make_branch_and_tree('.').bzrdir
+ request_class = smart_dir.SmartServerBzrDirRequestHasWorkingTree
+ request = request_class(backing)
+ expected = smart_req.SuccessfulSmartServerResponse(('yes',))
+ self.assertEqual(expected, request.execute(''))
+
+ def test_has_workingtree_no(self):
+ """A working tree is missing."""
+ backing = self.get_transport()
+ dir = self.make_bzrdir('.')
+ request_class = smart_dir.SmartServerBzrDirRequestHasWorkingTree
+ request = request_class(backing)
+ expected = smart_req.SuccessfulSmartServerResponse(('no',))
+ self.assertEqual(expected, request.execute(''))
+
+
class TestSmartServerBzrDirRequestDestroyRepository(
tests.TestCaseWithMemoryTransport):
"""Tests for BzrDir.destroy_repository."""
=== modified file 'doc/en/release-notes/bzr-2.5.txt'
--- a/doc/en/release-notes/bzr-2.5.txt 2011-11-18 11:49:47 +0000
+++ b/doc/en/release-notes/bzr-2.5.txt 2011-11-18 14:37:41 +0000
@@ -47,9 +47,6 @@
* Resolve regression from colocated branch path handling, by ensuring that
unreserved characters are unquoted in URLs. (Martin Packman, #842223)
-* Support looking up revision numbers by revision id in empty branches.
- (Jelmer Vernooij, #535031)
-
* Support verifying signatures on remote repositories.
(Jelmer Vernooij, #889694)
@@ -80,8 +77,8 @@
(Vincent Ladeuil)
* New HPSS calls ``Repository.has_signature_for_revision_id`` and
- ``Repository.make_working_trees``, ``BzrDir.destroy_repository``.
- (Jelmer Vernooij)
+ ``Repository.make_working_trees``, ``BzrDir.destroy_repository``,
+ ``BzrDir.has_workingtree``. (Jelmer Vernooij)
Testing
*******
More information about the bazaar-commits
mailing list