Rev 5835: (vila) Set correct parent when using 'switch -b' with bound branches (Fix in file:///home/pqm/archives/thelove/bzr/%2Btrunk/
Canonical.com Patch Queue Manager
pqm at pqm.ubuntu.com
Fri May 6 09:10:17 UTC 2011
At file:///home/pqm/archives/thelove/bzr/%2Btrunk/
------------------------------------------------------------
revno: 5835 [merge]
revision-id: pqm at pqm.ubuntu.com-20110506091002-ge55v96dgz9hfz67
parent: pqm at pqm.ubuntu.com-20110505192233-6916128few7exzsh
parent: abudden at gmail.com-20110506072524-ffrb7vm1k6zndsht
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Fri 2011-05-06 09:10:02 +0000
message:
(vila) Set correct parent when using 'switch -b' with bound branches (Fix
for Bug #513709). (Dr Al)
modified:
bzrlib/branch.py branch.py-20050309040759-e4baf4e0d046576e
bzrlib/switch.py switch.py-20071116011000-v5lnw7d2wkng9eux-1
bzrlib/tests/blackbox/test_branch.py test_branch.py-20060524161337-noms9gmcwqqrfi8y-1
bzrlib/tests/blackbox/test_switch.py test_switch.py-20071122111948-0c5en6uz92bwl76h-1
doc/en/release-notes/bzr-2.4.txt bzr2.4.txt-20110114053217-k7ym9jfz243fddjm-1
=== modified file 'bzrlib/branch.py'
--- a/bzrlib/branch.py 2011-04-27 11:25:28 +0000
+++ b/bzrlib/branch.py 2011-05-06 07:25:24 +0000
@@ -1271,7 +1271,11 @@
if repository_policy is not None:
repository_policy.configure_branch(result)
self.copy_content_into(result, revision_id=revision_id)
- result.set_parent(self.bzrdir.root_transport.base)
+ master_branch = self.get_master_branch()
+ if master_branch is None:
+ result.set_parent(self.bzrdir.root_transport.base)
+ else:
+ result.set_parent(master_branch.bzrdir.root_transport.base)
finally:
result.unlock()
return result
=== modified file 'bzrlib/switch.py'
--- a/bzrlib/switch.py 2010-05-07 11:50:28 +0000
+++ b/bzrlib/switch.py 2011-05-04 13:26:14 +0000
@@ -103,6 +103,7 @@
b.pull(to_branch, overwrite=True,
possible_transports=possible_transports)
b.set_bound_location(to_branch.base)
+ b.set_parent(b.get_master_branch().get_parent())
else:
raise errors.BzrCommandError('Cannot switch a branch, '
'only a checkout.')
=== modified file 'bzrlib/tests/blackbox/test_branch.py'
--- a/bzrlib/tests/blackbox/test_branch.py 2011-04-19 04:37:48 +0000
+++ b/bzrlib/tests/blackbox/test_branch.py 2011-05-05 16:24:16 +0000
@@ -30,8 +30,10 @@
from bzrlib.tests import (
fixtures,
HardlinkFeature,
+ script,
test_server,
)
+from bzrlib.tests.blackbox import test_switch
from bzrlib.tests.test_sftp_transport import TestCaseWithSFTPServer
from bzrlib.tests.script import run_script
from bzrlib.urlutils import local_path_to_url, strip_trailing_slash
@@ -516,3 +518,32 @@
2>The command 'bzr %(command)s' has been deprecated in bzr 2.4. Please use 'bzr branch' instead.
2>bzr: ERROR: Not a branch...
""" % locals())
+
+
+class TestBranchParentLocation(test_switch.TestSwitchParentLocationBase):
+
+ def _checkout_and_branch(self, option=''):
+ self.script_runner.run_script(self, '''
+ $ bzr checkout %(option)s repo/trunk checkout
+ $ cd checkout
+ $ bzr branch --switch ../repo/trunk ../repo/branched
+ 2>Branched 0 revision(s).
+ 2>Tree is up to date at revision 0.
+ 2>Switched to branch:...branched...
+ $ cd ..
+ ''' % locals())
+ bound_branch = branch.Branch.open_containing('checkout')[0]
+ master_branch = branch.Branch.open_containing('repo/branched')[0]
+ return (bound_branch, master_branch)
+
+ def test_branch_switch_parent_lightweight(self):
+ """Lightweight checkout using bzr branch --switch."""
+ bb, mb = self._checkout_and_branch(option='--lightweight')
+ self.assertParent('repo/trunk', bb)
+ self.assertParent('repo/trunk', mb)
+
+ def test_branch_switch_parent_heavyweight(self):
+ """Heavyweight checkout using bzr branch --switch."""
+ bb, mb = self._checkout_and_branch()
+ self.assertParent('repo/trunk', bb)
+ self.assertParent('repo/trunk', mb)
=== modified file 'bzrlib/tests/blackbox/test_switch.py'
--- a/bzrlib/tests/blackbox/test_switch.py 2011-04-15 07:01:22 +0000
+++ b/bzrlib/tests/blackbox/test_switch.py 2011-05-05 16:24:16 +0000
@@ -20,9 +20,16 @@
import os
-from bzrlib import osutils
+from bzrlib import (
+ osutils,
+ urlutils,
+ branch,
+ )
from bzrlib.workingtree import WorkingTree
-from bzrlib.tests import TestCaseWithTransport
+from bzrlib.tests import (
+ TestCaseWithTransport,
+ script,
+ )
from bzrlib.directory_service import directories
@@ -129,7 +136,7 @@
"""Using switch on a heavy checkout should find master sibling
The behaviour of lighweight and heavy checkouts should be
- consistentwhen using the convenient "switch to sibling" feature
+ consistent when using the convenient "switch to sibling" feature
Both should switch to a sibling of the branch
they are bound to, and not a sibling of themself"""
@@ -270,3 +277,54 @@
self.run_bzr('checkout --lightweight a checkout')
self.run_bzr('switch --directory checkout b')
self.assertFileEqual('initial\nmore\n', 'checkout/a')
+
+class TestSwitchParentLocationBase(TestCaseWithTransport):
+
+ def setUp(self):
+ """Set up a repository and branch ready for testing."""
+ super(TestSwitchParentLocationBase, self).setUp()
+ self.script_runner = script.ScriptRunner()
+ self.script_runner.run_script(self, '''
+ $ bzr init-repo --no-trees repo
+ Shared repository...
+ Location:
+ shared repository: repo
+ $ bzr init repo/trunk
+ Created a repository branch...
+ Using shared repository: ...
+ ''')
+
+ def assertParent(self, expected_parent, branch):
+ """Verify that the parent is not None and is set correctly."""
+ actual_parent = branch.get_parent()
+ self.assertIsSameRealPath(urlutils.local_path_to_url(expected_parent),
+ branch.get_parent())
+
+
+class TestSwitchParentLocation(TestSwitchParentLocationBase):
+
+ def _checkout_and_switch(self, option=''):
+ self.script_runner.run_script(self, '''
+ $ bzr checkout %(option)s repo/trunk checkout
+ $ cd checkout
+ $ bzr switch --create-branch switched
+ 2>Tree is up to date at revision 0.
+ 2>Switched to branch:...switched...
+ $ cd ..
+ ''' % locals())
+ bound_branch = branch.Branch.open_containing('checkout')[0]
+ master_branch = branch.Branch.open_containing('repo/switched')[0]
+ return (bound_branch, master_branch)
+
+ def test_switch_parent_lightweight(self):
+ """Lightweight checkout using bzr switch."""
+ bb, mb = self._checkout_and_switch(option='--lightweight')
+ self.assertParent('repo/trunk', bb)
+ self.assertParent('repo/trunk', mb)
+
+ def test_switch_parent_heavyweight(self):
+ """Heavyweight checkout using bzr switch."""
+ bb, mb = self._checkout_and_switch()
+ self.assertParent('repo/trunk', bb)
+ self.assertParent('repo/trunk', mb)
+
=== modified file 'doc/en/release-notes/bzr-2.4.txt'
--- a/doc/en/release-notes/bzr-2.4.txt 2011-05-05 15:26:26 +0000
+++ b/doc/en/release-notes/bzr-2.4.txt 2011-05-06 07:25:24 +0000
@@ -37,6 +37,9 @@
* All Tree types can now be exported as tar.*, zip or directories.
(Aaron Bentley)
+
+* Correct parent is now set when using 'switch -b' with bound branches.
+ (A. S. Budden, #513709)
Documentation
*************
More information about the bazaar-commits
mailing list