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 |
||
4714.1.1
by Jelmer Vernooij
Remove --default-rich-root argument in user-guide - the default format is now rich-root-enabled. |
33 |
bzr init-repo 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 |
||
4714.1.1
by Jelmer Vernooij
Remove --default-rich-root argument in user-guide - the default format is now rich-root-enabled. |
37 |
Next, create a feature branch and hack away:: |
3416.1.1
by Ian Clatworthy
new structure and initial content for closing chapters |
38 |
|
39 |
bzr branch beagle-trunk beagle-feature1 |
|
40 |
cd beagle-feature1 |
|
3882.5.2
by Jari Aalto
This patch unifies few examples to use same notation as elsewhere int he |
41 |
(hack, hack, hack) |
3416.1.1
by Ian Clatworthy
new structure and initial content for closing chapters |
42 |
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 |
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" |
45 |
||
46 |
When the feature is cooked, refresh your trunk mirror and merge |
|
47 |
your change:: |
|
48 |
||
49 |
cd ../beagle-trunk |
|
50 |
bzr update |
|
51 |
bzr merge ../beagle-feature1 |
|
52 |
bzr commit -m "Complete comment for SVN commit" |
|
53 |
||
54 |
As your trunk mirror is a checkout, committing to it implicitly |
|
55 |
commits to the real Subversion trunk. That's it! |
|
56 |
||
57 |
||
58 |
Using a central repository mirror |
|
59 |
--------------------------------- |
|
60 |
||
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 Bazaar one once and for all |
|
64 |
for your project, and then branch from that native Bazaar repository |
|
65 |
instead. bzr-svn provides the ``svn-import`` command for doing this |
|
3423.1.2
by Ian Clatworthy
add svn-import example |
66 |
repository-to-repository conversion. Here's an example of how to use it:: |
67 |
||
68 |
bzr svn-import svn+ssh://svn.gnome.org/svn/beagle |
|
3416.1.1
by Ian Clatworthy
new structure and initial content for closing chapters |
69 |
|
70 |
Here's the recipe from above updated to use a central Bazaar mirror:: |
|
71 |
||
4714.1.1
by Jelmer Vernooij
Remove --default-rich-root argument in user-guide - the default format is now rich-root-enabled. |
72 |
bzr init-repo beagle-repo |
3416.1.1
by Ian Clatworthy
new structure and initial content for closing chapters |
73 |
cd beagle-repo |
3423.1.2
by Ian Clatworthy
add svn-import example |
74 |
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 |
75 |
bzr branch beagle-trunk beagle-feature1 |
76 |
cd beagle-feature1 |
|
3882.5.2
by Jari Aalto
This patch unifies few examples to use same notation as elsewhere int he |
77 |
(hack, hack, hack) |
3416.1.1
by Ian Clatworthy
new structure and initial content for closing chapters |
78 |
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 |
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" |
81 |
cd ../beagle-trunk |
|
82 |
bzr pull |
|
83 |
bzr merge ../beagle-feature1 |
|
84 |
bzr commit -m "Complete comment for SVN commit" |
|
3423.1.1
by Ian Clatworthy
fixes to bzr-svn doc suggested by jelmer on #bzr |
85 |
bzr push |
3416.1.1
by Ian Clatworthy
new structure and initial content for closing chapters |
86 |
|
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 |
|
3423.1.1
by Ian Clatworthy
fixes to bzr-svn doc suggested by jelmer on #bzr |
89 |
(``bzr push``) is required. |
3416.1.1
by Ian Clatworthy
new structure and initial content for closing chapters |
90 |
|
3431.4.4
by Benjamin Rister
Added missing quotes. |
91 |
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 |
92 |
the first time you use those commands in the trunk branch. After that, |
93 |
bzr remembers them. |
|
94 |
||
95 |
The final piece of the puzzle in this setup is to put scripts in |
|
96 |
place to keep the central Bazaar 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. |
|
99 |
||
100 |
||
101 |
Limitations of bzr-svn |
|
102 |
---------------------- |
|
103 |
||
104 |
Bazaar and Subversion are different tools with different capabilities |
|
105 |
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. |
106 |
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 |
107 |
|
108 |
* Bazaar doesn't support versioned properties |
|
109 |
||
3423.1.1
by Ian Clatworthy
fixes to bzr-svn doc suggested by jelmer on #bzr |
110 |
* Bazaar doesn't support tracking of file copies. |
111 |
||
3416.1.1
by Ian Clatworthy
new structure and initial content for closing chapters |
112 |
See the bzr-svn web page, |
113 |
http://bazaar-vcs.org/BzrForeignBranches/Subversion, |
|
114 |
for the current list of constraints. |