Two things have got me thinking about SCMs lately:
Discussion on Fedora Maintainers about replacing CVS with a distributed SCM.
Hacking on Yum (which uses CVS), and needing some way to keep track of my patches.
For Yum, I’ve been using a copy of the CVS repository imported into Git. This is working so nicely that it has led to explore replacing SVN for dangerously incompetent.
So far I’ve done a test import of Wuja
into various distributed SCMs. git svnimport
worked fine. Conversion to
Mercurial via
Tailor choked a bit on the tags, but
is otherwise ok. I was unable to get either Tailor or bzr svn
to convert the
repository to Bazaar.
Some interesting figures:
| svn
| hg
| git
| raw
—|—|—|—|—
Size (KiB)
| 1888
| 1636
| 1096
| 464
In each case, disk usage is for a checkout of the main branch (i.e. trunk). The raw data from trunk HEAD is 464 KiB. Subversion requires 1424 KiB for metadata; this only contains information about the current revision. Mercurial and Git require 1172 and 632 KiB, respectively. The interesting part is that Mercurial and Git store the complete history of the repository in their metadata. You get far more information in much less space.