Saturday, April 09, 2005

Subversion

Somehow there is always some issue with source code repositories. Like most developers, I have, at various times, used many different tools. Some simmple, some complex; some good, some truely evil. Many times, the choice of the SCM tool was forced by outside constraints; no budget (i.e. must use a free tool); client has a corporate wide policy that must be followed; must run on a certain operating system. As a result, I have source code stored in a variety of different repositories. Or, I should say, had many repositories. No more; I have subverted all of them.

The triggering event was subversion 1.1. I had been using subversion for a while, but only for newer and non-critical projects. It was working quite well, but I didn't feel totally at ease with its use of Berkley DB. The 1.1 release provides a new option; FSFS, which has numerous advantages. One in particular is that the database is independent of the platform. Finally, I could migrate code from Windows based repositories to Linux, which is my primary OS today.

Setting up subversion on Windows was quick and straight forward. I used the vss2svn script. It is written in Perl, and it looked a lot neater and readable than most Perl scripts I have seen. More importantly, it worked. Not first time, admittedly; I fumbled a bit while I found out how to get it to work, but after a couple of mis-steps, I figured it out.
E.g.

svnadmin create --fs-type fsfs g:/svn/C

svn mkdir file:///g:/svn/C/Spread --message "C++ Spreadsheet library"
vss2svn.pl --vssproject "$/Spread Sheet" --svnrepo http://localhost/svn/C/Spread

Here I created a repository call "C" and migrated a VSS project called "Spread Sheet" into an svn project called "Spread". Repeat ad nauseam until all projects have been migrated. Note that while svnadmin and svn commands use file:// URLs, the script itself likes to tallk WebDAV (HTTP), so I had to configure Apache for subversion. [OK, I could have used suversion own server, but Apache was already installed and running.]

Reboot into Linux and confirm that the svn repository was OK. It was. Now it's just a quick install to get Eclipse to connect, right? Er, no, hold on a moment. The svn plugin for Eclipse uses Javahl library and the nice folks at tigris.org had just stopped supplying the binaries for Linux. Now I was too far down the subversion path to back off. To my surprise, it built and installed with no problems. All smiles? Almost, but not quite. Subeclipse is still a work in progress, and it got dirctly upset with me because I tried to commit a file with name that contained an accented letter (Caramellizzaté). My bad – I should have known better. Sigh. I am hoping the latest 0.9.30 release is more placid. Overall, though, I am quite pleased with the result.
Category:

0 Comments:

Post a Comment

<< Home