Sunday, April 25, 2004

Subversion

This evening, I installed the Subversion versioning control system on my Linux server. This is more or less a temporary setup. I plan on rebuilding that box (travis.pettijohn.com) when Fedora Core 2 comes out. It's due out in mid-May. At that time, I want to shift it to more of a server role than a desktop. I want to build that server with a mirrored RAID. I need a place where I can (more) safely store photos, music, web content, a database server and a versioning control system. The Linux Kernel supports software RAIDs natively. Fedora Core 2 uses the 2.6 Kernel, so it will be nice to get to use that without having to compile it myself.

Back to Subversion. It wasn't too difficult to install. I had to upgrade Apache from 2.0.40 to 2.0.48. The Subversion download page had RPMs of everything I needed. I also got an upgrade of PHP while I was at it. The documentation was pretty good. It explained how to create a repository and configure Apache. One of the best features of Subversion is that it was designed to use DAV, thus it needs a web server. (Actually, Subversion can run a standalone server or even use SSH, though DAV makes it the most accessible from platform to platform.) The only problem I had was a stupid oversight I made: the web server process needed permissions to read and write to the repository (duh).

Once I got the repository up and running, I installed TortoiseSVN for Windows. TortoiseSVN is a Windows Subversion client. I have to say, compared to SourceSafe's client, TortoiseSVN wins. My use of Vault has been very limited, but I'm tempted to say that TortoiseSVN wins. Here's why: it's just an Explorer add-in. You browse using Explorer like you would any other folder or file. Files and folders that are under version control get little green checkmark overlays. When files change, they get little red exclamation point overlays. If any file underneath the current directory (recursively) is changed, the folder gets the red exclamation point. Right clicking on a file allows you to bring up a log, perform diffs across versions, rename or move files (Subversion tracks movements, they don't just get re-added under a new name)...all that good stuff. It even has a Blame feature (just like Vault). So far I've been impressed. Another thing I really prefer about Subversion (and CVS and Vault) over SourceSafe is that they use Copy-Modify-Merge instead of Lock-Modify-Unlock. If you've never used a Copy-Modify-Merge solution, I suggest you follow those links to learn about the differences (and why Lock-Modify-Unlock can create a false sense of security).

I haven't tried it yet, but there's also a Visual Studio add in for Subversion called AnkhSVN. The screenshots look promising. It seems limited compared to TortoiseSVN or the command line svn binaries, but it's off to a good start.

No comments: