Recently we decided that, due to lack of updates on our current version control system and issues with it that didn’t seem to ever get fixed, to move to Subversion. Subversion, as most will know is an open source version control system.
We had considered moving to subversion several times before, but never wanted to switch because of the hassle, the inability to move the history and lack of several features we really need in a client. Last year or so I had found .NET bindings for Subversion (part of the Anhk SVN VS.NET plugin), which I wrote a simple svn client based on top of. Besides that, I wrote a program that could enumerate the revision info from the old system into a database, and import them into SVN. A year later I sent Marc the code I had for the client and he finished it, into what now is Floss (see for more info on Floss.).
The moving wasn’t easy. First of all, our old system used per-file revisions, but SVN did several files in a single revision, so what we had to do in the importer is find checkins that belong to eachother, in person, time and checkin comment and group them into a single group. Then change the SVN revision date and svn author so it had the proper date information, and then check the files in. The next step was to find where the old system branched it, and look through the labels for a hint at which version it was branched, as a branch wasn’t named, we used a label on the non-branched revision that came after the branch with a “base label” for the new version. This way we could find out the branch was 1 version below the base label. After that we had to create tags for the most important labels into the tags directory.
Tricky as it was, after several test runs we managed to import the old repository into Subversion, so from today on, we’ll be using Subversion only. It was an interesting experience to do all this, but nonetheless well worth it. We’ll be working on Floss, expanding the things we need from a Subversion client, and we’ll be all getting used to Subversion for the coming weeks but, we did it, we’re ready for the future.