CC Open Source Blog

Version Control Changes

gravatar

by nathan on 2008-04-01

I alluded to it in my last post and wanted to provide some more details and context on the changes we're making (have made) to our source control systems. Since I started working on CC code in late 2003 we've hosted our source repository in the CC Tools project at Sourceforge.net, first in CVS, later in Subversion). Sourceforge.net has been great in one major respect -- to the best of my knowledge we've never had a data loss issue. Of course, many times using Sourceforge has also felt like something to endure rather than appreciate. It was while enduring the delayed availability of Subversion that we decided to move the ccPublisher code base to Berlios.de, which was marginally better.

Since the beginning of 2008 a few things have conspired to finally push us over the edge and decide to leave Sourceforge.net behind. On one hand we've been itching to work with a distributed version control system (we wound up choosing Git). While using Sourceforge didn't rule that out, I wanted to make sure that we had a place to publish our repositories publicly, both for redundancy and transparency. Accepting this as a task just made me more amenable to also creating a place to publish a Subversion repository. The other event was a morning of outages (again) on Sourceforge's Subversion server. I was trying to commit updates to the license deeds (just over 20,000 files updated), and the operation kept failing mid-way through. Note that this is a commit that can take up to 12 hours when successful.

Two days later we were cutting over to a new system, hosted at code.creativecommons.org. We turned off write access to the Sourceforge repository, synced it, and asked contributors for public keys, which we're using for authentication. The new system supports both Git and Subversion, public key authentication for committers (using the pretty slick gitosis on the git side) and is fast. Really, really, really fast when compared to our Sourceforge repository.

Total estimated time for testing and deployment: 2 person-days.