[Nut-upsdev] Time for a distributed VCS?

Eric S. Raymond esr at thyrsus.com
Sat Nov 26 06:46:55 UTC 2011


Recently, I've been working on tools for doing high-quality conversions 
of project histories from centralized version-control systems like
Subversion to modern decentralized systems like git and hg. 

To see what I mean by "high quality", take a look at my DVCS migration
guide: <http://www.catb.org/esr/dvcs-migration-guide.html>.  A really
good conversion should, for example, rescue references like "r2317"
in commit comments so that they still point at the right changesets
inb the new system.

In order to improve my tools, I've been actively seeking opportunities
to help projects up-convert their repositories.  Recently I've done
conversions for Hercules (an IBM mainframe emulator) and Roundup (an
issue tracker).  I would be happy to perform the same service for the
NUT-UPS project.

I don't know whether there's been any discussion of moving the project
off Subversion.  But maybe you (all of you) should consider it. Subversion
was a good thing in its day, and certainly a huge improvement on CVS, 
but any modern DVCS really beats the snot out of it on just about any
level - with support for code analysis, off-net operation, much faster
speed of common actions such as commits, and in many other ways too.

The way I can help is by making the conversion perfectly
metadata-preserving, rapid and painless.  All three of these are
difficult with an ad-hoc, by hand conversion, but easy with my
repository-surgery tools and experience at the job. (And every time I
do one of these my tools get a bit better in the process - that's *my*
motivation.)

By "rapid" I mean that I can do the conversion and cutover within two
to three hours after an announced time. By "painless" I mean that
users should have zero difficulties other than the relatively trivial
one of learning how to say (for example) "git commit -a" rather than
"svn commit".  I've already covered most of "metadata-preserving"
earlier.

As to which DVCS you choose: the easiest choice would be git, as my
tools operate on git-import stream files.  If you want hg or bzr, that 
can be arranged with a very little more effort.  However, I must
recommend against bzr; it suffers from some deep confusions about
whether its working unit is an entire repo or a detached branch of
one, and I find this makes it unnecessarily difficult to actually use.

If you're ready to move, I'm ready to help.
-- 
		<a href="http://www.catb.org/~esr/">Eric S. Raymond</a>

The right to buy weapons is the right to be free.
        -- A.E. Van Vogt, "The Weapon Shops Of Isher", ASF December 1942



More information about the Nut-upsdev mailing list