Rev 6279: (jelmer) Add HPSS call ``BzrDir.destroy_repository``. (Jelmer Vernooij) in file:///srv/pqm.bazaar-vcs.org/archives/thelove/bzr/%2Btrunk/

Patch Queue Manager pqm at pqm.ubuntu.com
Fri Nov 18 12:15:48 UTC 2011


At file:///srv/pqm.bazaar-vcs.org/archives/thelove/bzr/%2Btrunk/

------------------------------------------------------------
revno: 6279 [merge]
revision-id: pqm at pqm.ubuntu.com-20111118121547-89qgigtpdix32fxw
parent: pqm at pqm.ubuntu.com-20111118094847-wje27baymgcvl9m2
parent: jelmer at samba.org-20111118114947-y0run8g5xlwa6h8i
committer: Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Fri 2011-11-18 12:15:47 +0000
message:
  (jelmer) Add HPSS call ``BzrDir.destroy_repository``. (Jelmer Vernooij)
modified:
  bzrlib/bzrdir.py               bzrdir.py-20060131065624-156dfea39c4387cb
  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/per_controldir/test_controldir.py test_bzrdir.py-20060131065642-0ebeca5e30e30866
  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/bzrdir.py'
--- a/bzrlib/bzrdir.py	2011-11-17 18:56:21 +0000
+++ b/bzrlib/bzrdir.py	2011-11-18 11:49:47 +0000
@@ -812,7 +812,10 @@
 
     def destroy_repository(self):
         """See BzrDir.destroy_repository."""
-        self.transport.delete_tree('repository')
+        try:
+            self.transport.delete_tree('repository')
+        except errors.NoSuchFile:
+            raise errors.NoRepositoryPresent(self)
 
     def create_workingtree(self, revision_id=None, from_branch=None,
                            accelerator_tree=None, hardlink=False):

=== modified file 'bzrlib/remote.py'
--- a/bzrlib/remote.py	2011-11-17 16:35:43 +0000
+++ b/bzrlib/remote.py	2011-11-18 11:49:47 +0000
@@ -486,8 +486,15 @@
 
     def destroy_repository(self):
         """See BzrDir.destroy_repository"""
-        self._ensure_real()
-        self._real_bzrdir.destroy_repository()
+        path = self._path_for_remote_call(self._client)
+        try:
+            response = self._call('BzrDir.destroy_repository', path)
+        except errors.UnknownSmartMethod:
+            self._ensure_real()
+            self._real_bzrdir.destroy_repository()
+            return
+        if response[0] != 'ok':
+            raise SmartProtocolError('unexpected response code %s' % (response,))
 
     def create_branch(self, name=None, repository=None,
                       append_revisions_only=None):

=== modified file 'bzrlib/smart/bzrdir.py'
--- a/bzrlib/smart/bzrdir.py	2011-09-21 19:45:57 +0000
+++ b/bzrlib/smart/bzrdir.py	2011-11-17 10:59:40 +0000
@@ -21,7 +21,6 @@
 from bzrlib.bzrdir import (
     BzrDir,
     BzrDirFormat,
-    BzrDirMetaFormat1,
     BzrProber,
     )
 from bzrlib.controldir import (
@@ -121,6 +120,22 @@
         return '/'.join(segments)
 
 
+class SmartServerBzrDirRequestDestroyRepository(SmartServerRequestBzrDir):
+
+    def do_bzrdir_request(self, name=None):
+        """Destroy the repository.
+
+        New in 2.5.0.
+
+        :return: On success, 'ok'.
+        """
+        try:
+            self._bzrdir.destroy_repository()
+        except errors.NoRepositoryPresent, e:
+            return FailedSmartServerResponse(('norepository',))
+        return SuccessfulSmartServerResponse(('ok',))
+
+
 class SmartServerBzrDirRequestCloningMetaDir(SmartServerRequestBzrDir):
 
     def do_bzrdir_request(self, require_stacking):

=== modified file 'bzrlib/smart/request.py'
--- a/bzrlib/smart/request.py	2011-11-17 11:22:28 +0000
+++ b/bzrlib/smart/request.py	2011-11-18 11:49:47 +0000
@@ -555,6 +555,9 @@
     'BzrDir.get_config_file', 'bzrlib.smart.bzrdir',
     'SmartServerBzrDirRequestConfigFile')
 request_handlers.register_lazy(
+    'BzrDir.destroy_repository', 'bzrlib.smart.bzrdir',
+    'SmartServerBzrDirRequestDestroyRepository')
+request_handlers.register_lazy(
     'BzrDirFormat.initialize', 'bzrlib.smart.bzrdir',
     'SmartServerRequestInitializeBzrDir')
 request_handlers.register_lazy(

=== modified file 'bzrlib/tests/per_controldir/test_controldir.py'
--- a/bzrlib/tests/per_controldir/test_controldir.py	2011-10-14 13:56:45 +0000
+++ b/bzrlib/tests/per_controldir/test_controldir.py	2011-11-17 10:59:40 +0000
@@ -156,6 +156,8 @@
         except (errors.UnsupportedOperation, errors.TransportNotPossible):
             raise TestNotApplicable('Format does not support destroying'
                                     ' repository')
+        self.assertRaises(errors.NoRepositoryPresent,
+            bzrdir.destroy_repository)
         self.assertRaises(errors.NoRepositoryPresent, bzrdir.open_repository)
         bzrdir.create_repository()
         bzrdir.open_repository()

=== modified file 'bzrlib/tests/test_remote.py'
--- a/bzrlib/tests/test_remote.py	2011-11-17 11:22:28 +0000
+++ b/bzrlib/tests/test_remote.py	2011-11-18 11:49:47 +0000
@@ -485,6 +485,20 @@
         self.assertFinished(client)
 
 
+class TestBzrDirDestroyRepository(TestRemote):
+
+    def test_destroy_repository(self):
+        transport = self.get_transport('quack')
+        client = FakeClient(transport.base)
+        client.add_expected_call(
+            'BzrDir.destroy_repository', ('quack/',),
+            'success', ('ok',)),
+        a_bzrdir = RemoteBzrDir(transport, RemoteBzrDirFormat(),
+            _client=client)
+        a_bzrdir.destroy_repository()
+        self.assertFinished(client)
+
+
 class TestBzrDirOpen(TestRemote):
 
     def make_fake_client_and_transport(self, path='quack'):

=== modified file 'bzrlib/tests/test_smart.py'
--- a/bzrlib/tests/test_smart.py	2011-11-17 12:49:07 +0000
+++ b/bzrlib/tests/test_smart.py	2011-11-18 11:49:47 +0000
@@ -222,6 +222,30 @@
         self.assertEqual(expected, request.execute('', 'False'))
 
 
+class TestSmartServerBzrDirRequestDestroyRepository(
+    tests.TestCaseWithMemoryTransport):
+    """Tests for BzrDir.destroy_repository."""
+
+    def test_destroy_repository_default(self):
+        """The repository can be removed."""
+        backing = self.get_transport()
+        dir = self.make_repository('.').bzrdir
+        request_class = smart_dir.SmartServerBzrDirRequestDestroyRepository
+        request = request_class(backing)
+        expected = smart_req.SuccessfulSmartServerResponse(('ok',))
+        self.assertEqual(expected, request.execute(''))
+
+    def test_destroy_repository_missing(self):
+        """An error is raised if the repository didn't exist."""
+        backing = self.get_transport()
+        dir = self.make_bzrdir('.')
+        request_class = smart_dir.SmartServerBzrDirRequestDestroyRepository
+        request = request_class(backing)
+        expected = smart_req.FailedSmartServerResponse(
+            ('norepository',), None)
+        self.assertEqual(expected, request.execute(''))
+
+
 class TestSmartServerRequestCreateRepository(tests.TestCaseWithMemoryTransport):
     """Tests for BzrDir.create_repository."""
 

=== modified file 'doc/en/release-notes/bzr-2.5.txt'
--- a/doc/en/release-notes/bzr-2.5.txt	2011-11-18 07:29:20 +0000
+++ b/doc/en/release-notes/bzr-2.5.txt	2011-11-18 11:49:47 +0000
@@ -80,7 +80,8 @@
   (Vincent Ladeuil)
 
 * New HPSS calls ``Repository.has_signature_for_revision_id`` and
-  ``Repository.make_working_trees``.  (Jelmer Vernooij)
+  ``Repository.make_working_trees``, ``BzrDir.destroy_repository``.
+  (Jelmer Vernooij)
 
 Testing
 *******




More information about the bazaar-commits mailing list