Rev 6481: (jelmer) Support removing colocated branches in 'bzr rmbranch'. (Jelmer in file:///srv/pqm.bazaar-vcs.org/archives/thelove/bzr/%2Btrunk/
Patch Queue Manager
pqm at pqm.ubuntu.com
Tue Mar 6 16:45:46 UTC 2012
At file:///srv/pqm.bazaar-vcs.org/archives/thelove/bzr/%2Btrunk/
------------------------------------------------------------
revno: 6481 [merge]
revision-id: pqm at pqm.ubuntu.com-20120306164545-6i5cyyfxctiwq11p
parent: pqm at pqm.ubuntu.com-20120304184759-kpae3rpzzscn4vjm
parent: jelmer at samba.org-20120228100224-41yy5hmcy3n01wn9
committer: Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Tue 2012-03-06 16:45:45 +0000
message:
(jelmer) Support removing colocated branches in 'bzr rmbranch'. (Jelmer
Vernooij)
modified:
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
bzrlib/tests/blackbox/test_rmbranch.py test_rmbranch.py-20100131150653-auenl06hu4y2d9tr-1
bzrlib/tests/blackbox/test_switch.py test_switch.py-20071122111948-0c5en6uz92bwl76h-1
doc/en/release-notes/bzr-2.6.txt bzr2.6.txt-20120116134316-8w1xxom1c7vcu1t5-1
=== modified file 'bzrlib/builtins.py'
--- a/bzrlib/builtins.py 2012-02-24 20:15:34 +0000
+++ b/bzrlib/builtins.py 2012-03-06 16:45:45 +0000
@@ -149,9 +149,9 @@
return location
-def lookup_sibling_branch(control_dir, location, possible_transports=None):
- """Lookup sibling branch.
-
+def open_sibling_branch(control_dir, location, possible_transports=None):
+ """Open a branch, possibly a sibling.
+
:param control_dir: Control directory relative to which to lookup the
location.
:param location: Location to look up
@@ -162,13 +162,31 @@
return control_dir.open_branch(location,
possible_transports=possible_transports)
except (errors.NotBranchError, errors.NoColocatedBranchSupport):
+ this_url = _get_branch_location(control_dir)
+ return Branch.open(
+ urlutils.join(
+ this_url, '..', urlutils.escape(location)))
+
+
+def open_nearby_branch(near=None, location=None, possible_transports=None):
+ """Open a nearby branch.
+
+ :param near: Optional location of container from which to open branch
+ :param location: Location of the branch
+ :return: Branch instance
+ """
+ if near is None:
+ if location is None:
+ location = "."
try:
- return Branch.open(location)
+ return Branch.open(location,
+ possible_transports=possible_transports)
except errors.NotBranchError:
- this_url = _get_branch_location(control_dir)
- return Branch.open(
- urlutils.join(
- this_url, '..', urlutils.escape(location)))
+ near = "."
+ cdir = controldir.ControlDir.open(near,
+ possible_transports=possible_transports)
+ return open_sibling_branch(cdir, location,
+ possible_transports=possible_transports)
@symbol_versioning.deprecated_function(symbol_versioning.deprecated_in((2, 3, 0)))
@@ -6232,7 +6250,12 @@
possible_transports=possible_transports,
source_branch=branch).open_branch()
else:
- to_branch = lookup_sibling_branch(control_dir, to_location)
+ try:
+ to_branch = Branch.open(to_location,
+ possible_transports=possible_transports)
+ except errors.NotBranchError:
+ to_branch = open_sibling_branch(control_dir, to_location,
+ possible_transports=possible_transports)
if revision is not None:
revision = revision.as_revision_id(to_branch)
switch.switch(control_dir, to_branch, force, revision_id=revision)
@@ -6435,13 +6458,13 @@
takes_args = ["location?"]
+ takes_options = ['directory']
+
aliases = ["rmbranch"]
- def run(self, location=None):
- if location is None:
- location = "."
- cdir = controldir.ControlDir.open_containing(location)[0]
- cdir.destroy_branch()
+ def run(self, directory=None, location=None):
+ br = open_nearby_branch(near=directory, location=location)
+ br.bzrdir.destroy_branch(br.name)
class cmd_shelve(Command):
=== modified file 'bzrlib/tests/blackbox/test_rmbranch.py'
--- a/bzrlib/tests/blackbox/test_rmbranch.py 2012-01-25 17:31:04 +0000
+++ b/bzrlib/tests/blackbox/test_rmbranch.py 2012-02-23 16:48:41 +0000
@@ -62,7 +62,7 @@
def test_remove_colo(self):
# Remove a colocated branch.
- tree = self.example_branch('a', format='development-colo')
+ tree = self.example_branch('a')
tree.bzrdir.create_branch(name="otherbranch")
self.assertTrue(tree.bzrdir.has_branch('otherbranch'))
self.run_bzr('rmbranch %s,branch=otherbranch' % tree.bzrdir.user_url)
@@ -70,6 +70,16 @@
self.assertFalse(dir.has_branch('otherbranch'))
self.assertTrue(dir.has_branch())
+ def test_remove_colo_directory(self):
+ # Remove a colocated branch.
+ tree = self.example_branch('a')
+ tree.bzrdir.create_branch(name="otherbranch")
+ self.assertTrue(tree.bzrdir.has_branch('otherbranch'))
+ self.run_bzr('rmbranch otherbranch -d %s' % tree.bzrdir.user_url)
+ dir = bzrdir.BzrDir.open('a')
+ self.assertFalse(dir.has_branch('otherbranch'))
+ self.assertTrue(dir.has_branch())
+
class TestSmartServerRemoveBranch(TestCaseWithTransport):
@@ -83,6 +93,6 @@
# being too low. If rpc_count increases, more network roundtrips have
# become necessary for this use case. Please do not adjust this number
# upwards without agreement from bzr's network support maintainers.
- self.assertLength(2, self.hpss_calls)
+ self.assertLength(5, self.hpss_calls)
self.assertLength(1, self.hpss_connections)
self.assertThat(self.hpss_calls, ContainsNoVfsCalls)
=== modified file 'bzrlib/tests/blackbox/test_switch.py'
--- a/bzrlib/tests/blackbox/test_switch.py 2012-02-18 16:55:04 +0000
+++ b/bzrlib/tests/blackbox/test_switch.py 2012-02-28 10:02:24 +0000
@@ -475,5 +475,5 @@
# become necessary for this use case. Please do not adjust this number
# upwards without agreement from bzr's network support maintainers.
self.assertLength(24, self.hpss_calls)
- self.assertLength(5, self.hpss_connections)
+ self.assertLength(4, self.hpss_connections)
self.assertThat(self.hpss_calls, ContainsNoVfsCalls)
=== modified file 'doc/en/release-notes/bzr-2.6.txt'
--- a/doc/en/release-notes/bzr-2.6.txt 2012-02-25 14:13:19 +0000
+++ b/doc/en/release-notes/bzr-2.6.txt 2012-02-28 10:02:24 +0000
@@ -34,6 +34,9 @@
* Avoid 'Invalid range access' errors when whole files are retrieved with
transport.http.get() . (Vincent Ladeuil, #924746)
+* ``bzr rmbranch`` now supports removing colocated branches.
+ (Jelmer Vernooij, #920653)
+
* Two new command hooks, ``pre_command`` and ``post_command``,
provide notification before and after a command has been run.
(Brian de Alwis, Jelmer Vernooij)
More information about the bazaar-commits
mailing list