Rev 4458: (andrew) Fix branch format upgrades triggered by default stacking in file:///home/pqm/archives/thelove/bzr/%2Btrunk/

Canonical.com Patch Queue Manager pqm at pqm.ubuntu.com
Thu Jun 18 06:13:47 BST 2009


At file:///home/pqm/archives/thelove/bzr/%2Btrunk/

------------------------------------------------------------
revno: 4458
revision-id: pqm at pqm.ubuntu.com-20090618051343-c9ltrfncx8hvw729
parent: pqm at pqm.ubuntu.com-20090618033331-kf1flup0bdqchydh
parent: andrew.bennetts at canonical.com-20090618034314-ufk7kb1tdwavagwd
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Thu 2009-06-18 06:13:43 +0100
message:
  (andrew) Fix branch format upgrades triggered by default stacking
  	policy on a smart server.
modified:
  NEWS                           NEWS-20050323055033-4e00b5db738777ff
  bzrlib/bzrdir.py               bzrdir.py-20060131065624-156dfea39c4387cb
  bzrlib/tests/bzrdir_implementations/test_bzrdir.py test_bzrdir.py-20060131065642-0ebeca5e30e30866
    ------------------------------------------------------------
    revno: 4456.2.1
    revision-id: andrew.bennetts at canonical.com-20090618034314-ufk7kb1tdwavagwd
    parent: pqm at pqm.ubuntu.com-20090617213303-9ngqs0i399xitemd
    committer: Andrew Bennetts <andrew.bennetts at canonical.com>
    branch nick: default-stacking-again
    timestamp: Thu 2009-06-18 13:43:14 +1000
    message:
      Fix automatic branch format upgrades triggered by a default stacking policy on a 1.16rc1 (or later) smart server.
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/bzrdir.py               bzrdir.py-20060131065624-156dfea39c4387cb
      bzrlib/tests/bzrdir_implementations/test_bzrdir.py test_bzrdir.py-20060131065642-0ebeca5e30e30866
=== modified file 'NEWS'
--- a/NEWS	2009-06-18 02:01:16 +0000
+++ b/NEWS	2009-06-18 05:13:43 +0000
@@ -25,6 +25,10 @@
   diverged-branches`` when a push fails because the branches have
   diverged.  (Neil Martinsen-Burrell, #269477)
 
+* Automatic format upgrades triggered by default stacking policies on a
+  1.16rc1 (or later) smart server work again.
+  (Andrew Bennetts, #388675)
+
 * Better message in ``bzr split`` error suggesting a rich root format.
   (Neil Martinsen-Burrell, #220067)
 

=== modified file 'bzrlib/bzrdir.py'
--- a/bzrlib/bzrdir.py	2009-06-12 03:44:12 +0000
+++ b/bzrlib/bzrdir.py	2009-06-18 03:43:14 +0000
@@ -2358,7 +2358,8 @@
     def set_branch_format(self, format):
         self._branch_format = format
 
-    def require_stacking(self, stack_on=None, possible_transports=None):
+    def require_stacking(self, stack_on=None, possible_transports=None,
+            _skip_repo=False):
         """We have a request to stack, try to ensure the formats support it.
 
         :param stack_on: If supplied, it is the URL to a branch that we want to
@@ -2402,7 +2403,8 @@
             target[:] = [target_branch, True, False]
             return target
 
-        if not (self.repository_format.supports_external_lookups):
+        if (not _skip_repo and
+                 not self.repository_format.supports_external_lookups):
             # We need to upgrade the Repository.
             target_branch, _, do_upgrade = get_target_branch()
             if target_branch is None:
@@ -3268,6 +3270,10 @@
         else:
             remote_repo = None
             policy = None
+        if require_stacking:
+            # The repo has already been created, but we need to make sure that
+            # we'll make a stackable branch.
+            bzrdir._format.require_stacking(_skip_repo=True)
         return remote_repo, bzrdir, require_stacking, policy
 
     def _open(self, transport):

=== modified file 'bzrlib/tests/bzrdir_implementations/test_bzrdir.py'
--- a/bzrlib/tests/bzrdir_implementations/test_bzrdir.py	2009-06-11 03:15:57 +0000
+++ b/bzrlib/tests/bzrdir_implementations/test_bzrdir.py	2009-06-18 03:43:14 +0000
@@ -1275,6 +1275,9 @@
         fallback_repo = repo._fallback_repositories[0]
         self.assertEqual(
             stack_on.base, fallback_repo.bzrdir.root_transport.base)
+        # The bzrdir creates a branch in stacking-capable format.
+        new_branch = control.create_branch()
+        self.assertTrue(new_branch._format.supports_stacking())
 
     def test_format_initialize_on_transport_ex_repo_fmt_name_None(self):
         t = self.get_transport('dir')




More information about the bazaar-commits mailing list