James Y Knight ([info]fuhm) wrote,
@ 2007-08-16 00:27:00
Previous Entry  Add to memories!  Tell a Friend  Next Entry
Entry tags:bzr

Adventures with bzr (part 3)
My bzr adventures are unfortunately not going as well as they seemed to be initially.

Here's the scenario that more closely models the actual workflow I wish to have with bzr.

The players:
1) Official "trunk" SVN repository
2) Automatically updated BZR repository mirroring SVN repository. Not writable by anyone other than SVN server.
3) A bunch of users.

Here's the plan:
a) User 1 makes a branch off BZR repository.
b) User 1 works on some code.
c) User 2 makes a branch off BZR repository.
d) User 2 merges User 1's branch into his own
e) User 2 modifies some stuff User 1 was working on.
f) User 1 makes some final commits to his branch and then pushes his branch to SVN.
g) BZR mirror of SVN gets auto-updated.
h) User 2 pulls new revisions from BZR mirror of SVN. bzr should know that the commits he merged directly from User 1 have already been applied and not try to re-merge them.
i) User 2 commits to SVN.

And now, the problems...

Problem 1
--------
bzr-svn has a time-consuming step of pulling down all the revision mapping info from the svn repository, and then analzying the repository to figure out the branching scheme, before it can do anything. This data isn't stored with the branch, it's instead stored in ~/.bazaar. This means that every user has to repeat this, the first time they want to get started with bzr. Unfortunate.

Problem 2
--------
Remember bug 131692 I ran into before? Well, that is killing me again, but this time I don't know how to work around it easily. Step (h) works (bzr does indeed know which commits were merged, as it stores that info in file properties in the svn repository, yippie!). However, User 2 cannot commit back into SVN, because of that bug.

Problem 3
--------
My actual repository is laid out like this:
trunk/project1
trunk/project2
branches/project1/mytestbranch/project1
branches/project1/mytestbranch/project2
branches/project1/releases/1.0/project1
branches/project1/releases/1.0/project2
branches/project2/whateverbranch/project1
branches/project2/whateverbranch/project2

When I first used bzr-svn, I told it to pull from $SVNREPOS/trunk/project1. Now, when I did this, it chose a branching scheme of "single-trunk/project1" (as shown in ~/.bazaar/subversion.conf). So, now it refuses to pull down any other projects or even other branches of the same project. It recommended that I type "bzr help svn-branching-schemes" and choose a different branching scheme, but this didn't help me, as there are only two options listed there: "trunk", for the /trunk/* layout, and "none" for no branches, just one branch at the root.

AND! This is a per-user configuration variable. So, even if I do find out that there is a branching-scheme I could manually change to in the configuration file, every user would also have to make this same modification to their configuration file. That's not really usable.

Problem 4
--------
bzr is currently *damn* slow. My repository has about 60k revisions in it. This seems to be more than bzr is currently able to really handle. Making a branch from shared repository to other outside the shared repository (on a local disk) takes about 15m, and making one within a shared repository takes 1m30s. The first number is important, because bzr will take at least that long for a remote user to get the repository. The second number is important, because this is something that people are supposed to be doing often. And both are simply way too long.

The end
------
I think this'll probably conclude my experimentation with bzr for now. It's looking nice, but it's just not usable quite yet. There seems to be quite a lot of activity going on trying to fix issues (most especially I know the speed issues are being worked on), so I hope that when I try again another release or two from now, bzr will be blazing fast, and the bugs and usability problems in bzr-svn will have been fixed.




Create an Account
Forgot your login or password?
Login w/ OpenID
English • Español • Deutsch • Русский…