~bzr-pqm/bzr/bzr.dev

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.