Rev 4597: Disable commit builders on stacked repositories. in http://bazaar.launchpad.net/~lifeless/bzr/bug-375013

Robert Collins robertc at robertcollins.net
Tue Aug 11 03:45:50 BST 2009


At http://bazaar.launchpad.net/~lifeless/bzr/bug-375013

------------------------------------------------------------
revno: 4597
revision-id: robertc at robertcollins.net-20090811024536-hlpc7pf5vh3kxd1b
parent: robertc at robertcollins.net-20090810051914-7akjrq0s5qcxz7bm
committer: Robert Collins <robertc at robertcollins.net>
branch nick: bug-375013
timestamp: Tue 2009-08-11 12:45:36 +1000
message:
  Disable commit builders on stacked repositories.
=== modified file 'bzrlib/repository.py'
--- a/bzrlib/repository.py	2009-08-06 02:23:37 +0000
+++ b/bzrlib/repository.py	2009-08-11 02:45:36 +0000
@@ -1695,6 +1695,10 @@
         :param revprops: Optional dictionary of revision properties.
         :param revision_id: Optional revision id.
         """
+        if self._fallback_repositories:
+            raise errors.BzrError("Cannot commit from a lightweight checkout "
+                "to a stacked branch. See "
+                "https://bugs.launchpad.net/bzr/+bug/375013 for details.")
         result = self._commit_builder_class(self, parents, config,
             timestamp, timezone, committer, revprops, revision_id)
         self.start_write_group()

=== modified file 'bzrlib/tests/per_repository/test_commit_builder.py'
--- a/bzrlib/tests/per_repository/test_commit_builder.py	2009-05-06 05:36:28 +0000
+++ b/bzrlib/tests/per_repository/test_commit_builder.py	2009-08-11 02:45:36 +0000
@@ -1267,3 +1267,19 @@
         self.addCleanup(branch.repository.abort_write_group)
         self.assertRaises(ValueError, builder.commit,
             u'Invalid\r\ncommit message\r\n')
+
+    def test_stacked_repositories_reject_commit_builder(self):
+        # As per bug 375013, committing to stacked repositories is currently
+        # broken, so repositories with fallbacks refuse to hand out a commit
+        # builder.
+        repo_basis = self.make_repository('basis')
+        branch = self.make_branch('local')
+        repo_local = branch.repository
+        try:
+            repo_local.add_fallback_repository(repo_basis)
+        except errors.UnstackableRepositoryFormat:
+            raise tests.TestNotApplicable("not a stackable format.")
+        repo_local.lock_write()
+        self.addCleanup(repo_local.unlock)
+        self.assertRaises(errors.BzrError, repo_local.get_commit_builder,
+            branch, [], branch.get_config())




More information about the bazaar-commits mailing list