Merge lp:~jelmer/brz/reference-absolute into lp:brz

Proposed by Jelmer Vernooij
Status: Merged
Approved by: Jelmer Vernooij
Approved revision: no longer in the source branch.
Merge reported by: The Breezy Bot
Merged at revision: not available
Proposed branch: lp:~jelmer/brz/reference-absolute
Merge into: lp:brz
Diff against target: 94 lines (+26/-14)
5 files modified
breezy/builtins.py (+6/-6)
breezy/bzr/branch.py (+6/-6)
breezy/symbol_versioning.py (+1/-1)
breezy/tests/blackbox/test_switch.py (+1/-1)
breezy/tests/test_bzrdir.py (+12/-0)
To merge this branch: bzr merge lp:~jelmer/brz/reference-absolute
Reviewer Review Type Date Requested Status
Martin Packman Approve
Review via email: mp+361390@code.launchpad.net

Commit message

Use absolute URLs in branch reference locations.

Description of the change

Use absolute URLs in branch reference locations.

This fixes backward compatibility with bzr.

To post a comment you must log in.
Revision history for this message
Martin Packman (gz) wrote :

Thank you very much! Great to have the test too.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'breezy/builtins.py'
2--- breezy/builtins.py 2019-01-01 23:40:59 +0000
3+++ breezy/builtins.py 2019-01-04 21:32:20 +0000
4@@ -206,13 +206,13 @@
5 try:
6 reference = control_dir.get_branch_reference()
7 except errors.NotBranchError:
8- # There is no active branch, just return the colocated branches.
9- for name, branch in viewitems(control_dir.get_branches()):
10- yield name, branch
11- return
12+ reference = None
13 if reference is not None:
14- ref_branch = Branch.open(
15- reference, possible_transports=possible_transports)
16+ try:
17+ ref_branch = Branch.open(
18+ reference, possible_transports=possible_transports)
19+ except errors.NotBranchError:
20+ ref_branch = None
21 else:
22 ref_branch = None
23 if ref_branch is None or ref_branch.name:
24
25=== modified file 'breezy/bzr/branch.py'
26--- breezy/bzr/branch.py 2018-11-30 12:39:04 +0000
27+++ breezy/bzr/branch.py 2019-01-04 21:32:20 +0000
28@@ -977,12 +977,12 @@
29
30 def _write_reference(self, a_controldir, transport, to_branch):
31 to_url = to_branch.user_url
32- if a_controldir.control_url == to_branch.controldir.control_url:
33- # Write relative paths for colocated branches, but absolute
34- # paths for everything else. This is for the benefit
35- # of older bzr versions that don't support relative paths.
36- to_url = urlutils.relative_url(
37- a_controldir.user_url, to_branch.user_url)
38+ # Ideally, we'd write a relative path here for the benefit of colocated
39+ # branches - so that moving a control directory doesn't break
40+ # any references to colocated branches. Unfortunately, bzr
41+ # does not support relative URLs. See pad.lv/1803845 -- jelmer
42+ # to_url = urlutils.relative_url(
43+ # a_controldir.user_url, to_branch.user_url)
44 transport.put_bytes('location', to_url.encode('utf-8'))
45
46 def set_reference(self, a_controldir, name, to_branch):
47
48=== modified file 'breezy/symbol_versioning.py'
49--- breezy/symbol_versioning.py 2018-11-29 19:43:19 +0000
50+++ breezy/symbol_versioning.py 2019-01-04 21:32:20 +0000
51@@ -319,7 +319,7 @@
52 if filter:
53 try:
54 warnings.filters.remove(filter)
55- except IndexError:
56+ except (ValueError, IndexError):
57 pass
58 return cleanup
59
60
61=== modified file 'breezy/tests/blackbox/test_switch.py'
62--- breezy/tests/blackbox/test_switch.py 2018-12-21 18:57:26 +0000
63+++ breezy/tests/blackbox/test_switch.py 2019-01-04 21:32:20 +0000
64@@ -576,7 +576,7 @@
65 $ mv mywork mywork1
66 $ cd mywork1
67 $ brz branches
68- * br1
69+ br1
70 ''', null_output_matches_anything=True)
71
72 def test_switch_to_new_branch_on_old_rev(self):
73
74=== modified file 'breezy/tests/test_bzrdir.py'
75--- breezy/tests/test_bzrdir.py 2018-11-17 17:37:42 +0000
76+++ breezy/tests/test_bzrdir.py 2019-01-04 21:32:20 +0000
77@@ -1477,6 +1477,18 @@
78 errors.AlreadyBranchError, tree.controldir.create_branch,
79 name='foo')
80
81+ def test_supports_relative_reference(self):
82+ tree = self.make_branch_and_tree('.', format='development-colo')
83+ target1 = tree.controldir.create_branch(name='target1')
84+ target2 = tree.controldir.create_branch(name='target2')
85+ source = tree.controldir.set_branch_reference(target1, name='source')
86+ self.assertEqual(
87+ target1.user_url, tree.controldir.open_branch('source').user_url)
88+ source.controldir.get_branch_transport(None, 'source').put_bytes(
89+ 'location', b'file:,branch=target2')
90+ self.assertEqual(
91+ target2.user_url, tree.controldir.open_branch('source').user_url)
92+
93
94 class SampleBzrFormat(bzrdir.BzrFormat):
95

Subscribers

People subscribed via source and target branches