bzr-svn branch/tag integration problem

Greg Hanson calicojck at gmail.com
Mon Jul 27 16:06:24 BST 2009


Hello,

I'm currently working on a project at my work to speed up our version
control.  Due to various political and technical reasons, we can't move our
server side VCS off of subversion in the near future, so I've been
experimenting with using Bazaar on the client talking to svn on the server.
My hope is to get bzr's foot in the door, so it will be at the top of the
list when we decide to move off of svn on the server side.  So far, the
results are awesome.  I've been able to replicate our workflow with Bazaar
and almost every operation we perform can be completed in less than 10
seconds (compared to 4-5 minutes for the same operations in svn).
Everything I've done in Bazaar so far has been awesome.  After using git a
bit, I was amazed at how much more straightfoward Bazaar is to use.

The one thorny issue I'm having with the integration has to do with how our
subversion repository is layed out and the way bzr integrates with it.  Any
help on getting this figured out would be great.

Right now, our svn repository looks like this (suppose we have a project
named project_a):

/project_a/trunk
/project_a/release_a
/project_a/release_b

The release branches are cut from trunk everytime we have a major release.
We backport to 2 or 3 of these release branches when a new feature or bug is
completed.

All of our development is done in what we call "issue branches," which are
located in a subdirectory called issues.  This subdirectory has the default
svn repository layout except without trunk.

/project_a/issues/branches
/project_a/issues/tags

Our workfow goes something like this:

1) Create an issue branch (in /project_a/issues/branches/<jira_case_number>)
which is branched off of trunk
2) Create a corresponding tag (/project_a/issues/tags/<jira_case_number>/1)
3) Do our development on the branch
4) Create another numbered tag (/project_a/issues/tags/<jira_case_number>/2)
5) Repeat steps 3 and 4 until we are ready to push the change into our
release branches.
6) Perform a cherry-pick merge using our tags into trunk and the release
branches.

When I use bazaar to perform these operations, I run into some strange
problems.  Steps 1-5 work exactly as I would expect, when I create a tag in
bazaar and push that change into svn, the tag goes into /tags subdirectory
underneath the issues directory.  The problem comes when I try to
cherry-pick merge that change into trunk.  When I perform the merge in
bazaar, all the tags are copied into the branch I am merging into.  Then
when I push into subversion, all the tags from /project_a/issues/tags are
copied into /project_a/tags.  I'd like to avoid this, but I'm not quite sure
how to go about doing this.  I had a couple different idea, but maybe
someone can set me straight on whether or not these will work:

1) Can I set up my subversion.conf to ignore all tags and branches for
/project_a but use the guessed-layout=trunk2 on the /project_a/issues
directory?  Is there a different way for me to set up my subversion.conf to
match our layout correctly?  I didn't find much for documentation on the
subversion.conf, so if there is something I should have read, please let me
know.

2) Should bazaar be copying all of the tags to the new branch when it does a
cherry-pick merge?  It seems like if you wanted any tags at all, it would
only be the ones associated with the revisions you are merging.

Maybe there is just something I'm missing here.  Any pointers (or better
ideas :-) ) would be much appreciated.  Thanks much!

-- 
Greg Hanson
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://lists.ubuntu.com/archives/bazaar/attachments/20090727/cee0b42e/attachment.htm 


More information about the bazaar mailing list