[Biopython-dev] SVN migration and Launchpad mirroring

Bartek Wilczynski bartek at rezolwenta.eu.org
Tue Feb 10 12:21:41 UTC 2009


On Mon, Feb 9, 2009 at 10:39 PM, Bruce Southey <bsouthey at gmail.com> wrote:
> Python PEP 0374 "Migrating from svn to a distributed VCS" makes some points.
> http://www.python.org/dev/peps/pep-0374/

Excellent link. Shows quite thorough comparison between possible DVCSs. And also
that there are more people thinking about switching to a DVCS because SVN is
not much better than CVS.

The worrying part for me were the benchmarks showing that bzr is lagging behing
mercurial and git in terms of speed. They mention that the benchmarks were done
with an old version of bzr and there seems to be quite a lot of work
on bzr performance
so I decided to see how it works with actual biopython tree and
current bzr and below
are my first impressions. An important note here is that I'm not
experienced in converting
fairly large projects from CVS to any DVCS and what I've done might
not be an optimal setup.

I've taken the whole biopython CVS tree with complete version history
(~3500 commits)
and converted it to bzr branch using tailor. It took about 2-3 hours,
but it needs to be done only once.
 The nice thing about tailor is that it gives you a directory
structure with both bzr and cvs files so it can be later
used for commiting stuff back to the CVS tree as well as getting new
changes from CVS.

Once I had that, I could publish my private branch of biopython to
launchpad (it took about 10s).
Now, if anyone is interested in test-driving bazaar+launchpad with
biopython, he/she can just
branch it to your own computer (you don't need any account for that,
just bzr installed):
bzr branch lp:~bartek/junk/biopython

I did that (branch) on a different computert (~2min). Now one can
start modifying code.
I've done some  changes to the Bio.Motif code (add a method, commit
locally, fix a small bug in it,
commit again, test) and pushed the changes to the branch on launchpad.
Commits are quick (~3s),
push takes about a minute, but this is including a scan of the whole
tree, so it should not
take much longer than this for bigger changes.

Note:This is my own branch, so I can commit to it, but if I was not
the owner (or maintainer) of the
branch, I would have to either send my changes to the maintainer or
publish my branch and let him
"pull" from it.

I realised later that I've accidentaly  added a large directory during
tailor conversion, so I removed it in
the original bzr branch (as made by tailor) merged it with the changes
pushed already to launchpad
from somewhere else (Motif) and pushed the resulting tree back to
launchpad.The removal was very fast
(~5s) and the push took about the same time as with the small
change.The good thing is that the history
of all changes is retained.

If anyone wants to give it a try, just install bzr and you can easily
branch from me using:
bzr branch lp:~bartek/junk/biopython

The branch history can be seen here:

And the annotated source code is here:

The specific changes done by me can be seen as revisions:

In summary, I think that it's doable to convert current CVS tree to bzr and
bzr handle the job of a DVCS. Performance is not stellar (epsecially code
browsing in launchpad is sometimes slow) but for it's acceptable, especially
given that I'm rarely browsing the history, and much more often use command
line tools which are (for me) fast enough.

Please let me know what others think. If there will be general
interest in that, I
can try to set up a more permanent (but still experimental) bzr branch which
would be automatically synchronized from CVS, so that we can do a more
long-term experiment to see whether it works, and people like it.


More information about the Biopython-dev mailing list