I started the process to convert our organization's CVS repository to Subversion. I decided to do a mock implementation as my "pilot". I took the CVS repository and made a copy to another machine (Mac OS X 10.3.7) which serves as the "mock" Subversion server.
Our current CVS repository consists of two "major" projects and 26 small projects (support pieces, tools, scripts, etc). I decided to try to convert one of the major projects to start with.
Since I used Adam Swift's article as a jumping off point (see my
first blog about this effort), I installed everything from Wilfredo Sanchez's iDisk. After that I did the requisite steps of editing the httpd.conf file, creating passwords, etc, Subversion was installed and ready. It all went very smoothly thanks to Wilfredo's installers and Adam's article.
The next step for me was to convert one of the major projects since I wanted to retain our years of revision history and heaps of tags and branches. I decided to go the easy route and use the
cvs2svn script from tigris.org. Of course (and I can't stress the importance of this enough),
I read the documentation before I started to do anything.
I wanted everything to go smoothly so I decided to "install" the cvs2svn tool. I was so eager to get the conversion done and start playing with subversion that I just ran the tool pointing it at a new svn repository. The tool erred complaining that I did not have the right DBM for Python and the BerkeleyDB I was using. Next step was hunt for the right DBM.
I checked out the new bsddb3 module from the
SourceForge project website then I downloaded the
4.2.4 source and ungzipped it.
The module compiled cleanly with minimal effort because (and I can't stress this enough - again),
I read the Read Me. I ran the test script and "most" tests passed. As I said, I was eager to do the conversion so I didn't really care what didn't pass. Finally, I installed the bsddb3 module by following the instructions.
I re-ran the cvs2svn conversion script and my CVS repository was on it's way to becoming a Subversion repository. Then the script died on the second pass

. Looking at the error message I found that 4 files (of a total of 3500 or so) had a regular tag with the same name as one of the project's branch tags.
I was kind of pissed about this because I knew how it happened. I remembered a year ago one of the developers was trying to shortcut having to checkin on both a branch and the trunk and he decided to move some tags around. Fortunately, I caught it before he did too much damage but it seems these four files slipped by.
I decided to use the cvs2svn option to "force-branch" and turned these regular tags back into branch tags during the conversion. I am not sure wwhat kind of imapct this will have on the subversion repository but I am sure I'll find out. After that, the conversion went well and after a few hours of converting the whole project was in Berkeley database files as part of a Subversion repository!
My next step will be learning how to access and mainpulate the repository.
Hooray!

It's become time again for me to revisit my organization's desire to move from CVS to Subversion. I've gotten out a few releases of our products recently and with that work out of the way, I'm getting back to swimming around in Subversion. This is the
Tracked: Feb 08, 13:34