7
brz-svn lets developers use Breezy as their VCS client on projects
8
still using a central Subversion repository. Access to Subversion
9
repositories is largely transparent, i.e. you can use most ``brz``
10
commands directly on Subversion repositories exactly the same
11
as if you were using ``brz`` on native Breezy branches.
13
Many brz-svn users create a local mirror of the central Subversion
14
trunk, work in local feature branches, and submit their
15
overall change back to Subversion when it is ready
16
to go. This lets them gain many of the advantages of distributed
17
VCS tools without interrupting existing team-wide processes and
18
tool integration hooks currently built on top of Subversion. Indeed,
19
this is a common interim step for teams looking to adopt Breezy but
20
who are unable to do so yet for timing or non-technical reasons.
22
For installation instructions, see the brz-svn home page:
23
http://wiki.bazaar.canonical.com/BzrForeignBranches/Subversion.
29
Here's a simple example of how you can use brz-svn to hack on a
30
GNOME project like **beagle**. Firstly, setup a local shared repository
31
for storing your branches in and checkout the trunk::
33
brz init-shared-repo beagle-repo
35
brz checkout svn+ssh://svn.gnome.org/svn/beagle/trunk beagle-trunk
37
Next, create a feature branch and hack away::
39
brz branch beagle-trunk beagle-feature1
42
brz commit -m "blah blah blah"
44
brz commit -m "blah blah blah"
46
When the feature is cooked, refresh your trunk mirror and merge
51
brz merge ../beagle-feature1
52
brz commit -m "Complete comment for SVN commit"
54
As your trunk mirror is a checkout, committing to it implicitly
55
commits to the real Subversion trunk. That's it!
58
Using a central repository mirror
59
---------------------------------
61
For large projects, it often makes sense to tweak the recipe given above.
62
In particular, the initial checkout can get quite slow so you may wish
63
to import the Subversion repository into a Breezy one once and for all
64
for your project, and then branch from that native Breezy repository
65
instead. brz-svn provides the ``svn-import`` command for doing this
66
repository-to-repository conversion. Here's an example of how to use it::
68
brz svn-import svn+ssh://svn.gnome.org/svn/beagle
70
Here's the recipe from above updated to use a central Breezy mirror::
72
brz init-shared-repo beagle-repo
74
brz branch bzr+ssh://brz.gnome.org/beagle.brz/trunk beagle-trunk
75
brz branch beagle-trunk beagle-feature1
78
brz commit -m "blah blah blah"
80
brz commit -m "blah blah blah"
83
brz merge ../beagle-feature1
84
brz commit -m "Complete comment for SVN commit"
87
In this case, committing to the trunk only commits the merge locally.
88
To commit back to the master Subversion trunk, an additional command
89
(``brz push``) is required.
91
Note: You'll need to give ``pull`` and ``push`` the relevant URLs
92
the first time you use those commands in the trunk branch. After that,
95
The final piece of the puzzle in this setup is to put scripts in
96
place to keep the central Breezy mirror synchronized with the Subversion
97
one. This can be done by adding a cron job, using a Subversion hook,
98
or whatever makes sense in your environment.
101
Limitations of brz-svn
102
----------------------
104
Breezy and Subversion are different tools with different capabilities
105
so there will always be some limited interoperability issues.
106
Here are some examples current as of brz-svn 0.5.4:
108
* Breezy doesn't support versioned properties
110
* Breezy doesn't support tracking of file copies.
112
See the brz-svn web page,
113
http://wiki.bazaar.canonical.com/BzrForeignBranches/Subversion,
114
for the current list of constraints.