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