3416.1.1
by Ian Clatworthy
new structure and initial content for closing chapters |
1 |
bzr-svn |
2 |
======= |
|
3 |
||
4 |
Overview |
|
5 |
-------- |
|
6 |
||
7 |
bzr-svn lets developers use Bazaar 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 ``bzr`` |
|
10 |
commands directly on Subversion repositories exactly the same |
|
11 |
as if you were using ``bzr`` on native Bazaar branches. |
|
12 |
||
13 |
Many bzr-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 Bazaar but |
|
20 |
who are unable to do so yet for timing or non-technical reasons. |
|
21 |
||
3423.1.3
by Ian Clatworthy
incorporate feedback from Neil Martinsen-Burrell |
22 |
For installation instructions, see the bzr-svn home page: |
23 |
http://bazaar-vcs.org/BzrForeignBranches/Subversion. |
|
24 |
||
3416.1.1
by Ian Clatworthy
new structure and initial content for closing chapters |
25 |
|
26 |
A simple example |
|
27 |
---------------- |
|
28 |
||
29 |
Here's a simple example of how you can use bzr-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:: |
|
32 |
||
4372.1.1
by Jelmer Vernooij
Use --default-rich-root rather than --rich-root-pack in the user guide. |
33 |
bzr init-repo --default-rich-root beagle-repo |
3416.1.1
by Ian Clatworthy
new structure and initial content for closing chapters |
34 |
cd beagle-repo |
35 |
bzr checkout svn+ssh://svn.gnome.org/svn/beagle/trunk beagle-trunk |
|
36 |
||
4372.1.1
by Jelmer Vernooij
Use --default-rich-root rather than --rich-root-pack in the user guide. |
37 |
Note that using the ``default-rich-root`` option to ``init-repo`` is |
3416.1.1
by Ian Clatworthy
new structure and initial content for closing chapters |
38 |
important as bzr-svn requires some extra metadata not yet supported in Bazaar's |
39 |
default repository format. Next, create a feature branch and hack away:: |
|
40 |
||
41 |
bzr branch beagle-trunk beagle-feature1 |
|
42 |
cd beagle-feature1 |
|
3882.5.2
by Jari Aalto
This patch unifies few examples to use same notation as elsewhere int he |
43 |
(hack, hack, hack) |
3416.1.1
by Ian Clatworthy
new structure and initial content for closing chapters |
44 |
bzr commit -m "blah blah blah" |
3882.5.2
by Jari Aalto
This patch unifies few examples to use same notation as elsewhere int he |
45 |
(hack, hack, hack) |
3416.1.1
by Ian Clatworthy
new structure and initial content for closing chapters |
46 |
bzr commit -m "blah blah blah" |
47 |
||
48 |
When the feature is cooked, refresh your trunk mirror and merge |
|
49 |
your change:: |
|
50 |
||
51 |
cd ../beagle-trunk |
|
52 |
bzr update |
|
53 |
bzr merge ../beagle-feature1 |
|
54 |
bzr commit -m "Complete comment for SVN commit" |
|
55 |
||
56 |
As your trunk mirror is a checkout, committing to it implicitly |
|
57 |
commits to the real Subversion trunk. That's it! |
|
58 |
||
59 |
||
60 |
Using a central repository mirror |
|
61 |
--------------------------------- |
|
62 |
||
63 |
For large projects, it often makes sense to tweak the recipe given above. |
|
64 |
In particular, the initial checkout can get quite slow so you may wish |
|
65 |
to import the Subversion repository into a Bazaar one once and for all |
|
66 |
for your project, and then branch from that native Bazaar repository |
|
67 |
instead. bzr-svn provides the ``svn-import`` command for doing this |
|
3423.1.2
by Ian Clatworthy
add svn-import example |
68 |
repository-to-repository conversion. Here's an example of how to use it:: |
69 |
||
70 |
bzr svn-import svn+ssh://svn.gnome.org/svn/beagle |
|
3416.1.1
by Ian Clatworthy
new structure and initial content for closing chapters |
71 |
|
72 |
Here's the recipe from above updated to use a central Bazaar mirror:: |
|
73 |
||
4372.1.1
by Jelmer Vernooij
Use --default-rich-root rather than --rich-root-pack in the user guide. |
74 |
bzr init-repo --default-rich-root beagle-repo |
3416.1.1
by Ian Clatworthy
new structure and initial content for closing chapters |
75 |
cd beagle-repo |
3423.1.2
by Ian Clatworthy
add svn-import example |
76 |
bzr branch bzr+ssh://bzr.gnome.org/beagle.bzr/trunk beagle-trunk |
3416.1.1
by Ian Clatworthy
new structure and initial content for closing chapters |
77 |
bzr branch beagle-trunk beagle-feature1 |
78 |
cd beagle-feature1 |
|
3882.5.2
by Jari Aalto
This patch unifies few examples to use same notation as elsewhere int he |
79 |
(hack, hack, hack) |
3416.1.1
by Ian Clatworthy
new structure and initial content for closing chapters |
80 |
bzr commit -m "blah blah blah" |
3882.5.2
by Jari Aalto
This patch unifies few examples to use same notation as elsewhere int he |
81 |
(hack, hack, hack) |
3416.1.1
by Ian Clatworthy
new structure and initial content for closing chapters |
82 |
bzr commit -m "blah blah blah" |
83 |
cd ../beagle-trunk |
|
84 |
bzr pull |
|
85 |
bzr merge ../beagle-feature1 |
|
86 |
bzr commit -m "Complete comment for SVN commit" |
|
3423.1.1
by Ian Clatworthy
fixes to bzr-svn doc suggested by jelmer on #bzr |
87 |
bzr push |
3416.1.1
by Ian Clatworthy
new structure and initial content for closing chapters |
88 |
|
89 |
In this case, committing to the trunk only commits the merge locally. |
|
90 |
To commit back to the master Subversion trunk, an additional command |
|
3423.1.1
by Ian Clatworthy
fixes to bzr-svn doc suggested by jelmer on #bzr |
91 |
(``bzr push``) is required. |
3416.1.1
by Ian Clatworthy
new structure and initial content for closing chapters |
92 |
|
3431.4.4
by Benjamin Rister
Added missing quotes. |
93 |
Note: You'll need to give ``pull`` and ``push`` the relevant URLs |
3416.1.1
by Ian Clatworthy
new structure and initial content for closing chapters |
94 |
the first time you use those commands in the trunk branch. After that, |
95 |
bzr remembers them. |
|
96 |
||
97 |
The final piece of the puzzle in this setup is to put scripts in |
|
98 |
place to keep the central Bazaar mirror synchronized with the Subversion |
|
99 |
one. This can be done by adding a cron job, using a Subversion hook, |
|
100 |
or whatever makes sense in your environment. |
|
101 |
||
102 |
||
103 |
Limitations of bzr-svn |
|
104 |
---------------------- |
|
105 |
||
106 |
Bazaar and Subversion are different tools with different capabilities |
|
107 |
so there will always be some limited interoperability issues. |
|
3978.3.12
by Jelmer Vernooij
Update required bzr-svn for pushing to svn to 0.5.4. |
108 |
Here are some examples current as of bzr-svn 0.5.4: |
3416.1.1
by Ian Clatworthy
new structure and initial content for closing chapters |
109 |
|
110 |
* Bazaar doesn't support versioned properties |
|
111 |
||
3423.1.1
by Ian Clatworthy
fixes to bzr-svn doc suggested by jelmer on #bzr |
112 |
* Bazaar doesn't support tracking of file copies. |
113 |
||
3416.1.1
by Ian Clatworthy
new structure and initial content for closing chapters |
114 |
See the bzr-svn web page, |
115 |
http://bazaar-vcs.org/BzrForeignBranches/Subversion, |
|
116 |
for the current list of constraints. |