Fun with Subversion

May 24th, 2007 by Jeff | Dump Core

No, I’m not looking to overthrow any governments. I’m talking about Subversion, the revision control system that is a “compelling replacement for CVS in the open source community.” Most developers are familiar with the concept of source or revision control: the “official” version of the source code for a given project is (usually) kept in a central location, and components or modules are “checked out” by developers so they can be worked on. When the changes are complete, they are “committed” back to the revision control system where they are integrated into the official source. Most revision control systems have ways to manage or at least identify conflicts (i.e. two developers making changes to the same code at the same time), thus helping to keep everyone on the same page. They also give project managers a way to tag “milestones” so that if you need to roll back changes to a previous version, it’s relatively simple to back out the new code and restore the original.

I’ve worked with a number of revision control systems over the years, most notably Sablime, which I used rather extensively when I worked for IBM on the Lucent contract. (In looking up that link, I just discovered that Sablime is actually a Bell Labs product, a fact I never knew before. Bell Labs, of course, was spun off of AT&T and became Lucent Technologies, which is now Alcatel-Lucent. This would, of course, explain why Sablime was so prevalent there. And here I thought they were just being masochistic.) I also worked briefly with Microsoft’s Visual SourceSafe… the key word being “briefly”, to which I would prepend the word “fortunately”. I am fond of neither of these systems, and wouldn’t personally recommend them. I have, of course, heard all kinds of extensive things about CVS, both good and bad, but have never really used it on a project.

When I got to ManTech, they had recently rolled out Subversion (or SVN) as their internal revision control, using TortoiseSVN as the front end. (Ours is a Microsoft .NET shop, and Tortoise makes using SVN as simple as a couple context menu choices in Windows Explorer.) SVN touts itself as a “replacement” for CVS, “improving” on its functionality and adding features that long-time CVS users have begged for. After using it now for a while, I’ve come to really enjoy working with SVN and Tortoise. It’s become so useful, in fact, that I installed in on Demeter (our Linux box) and use it for my own personal revision control. I’ve even come to use it for some rather unconventional things. Among its current tasks:

  • Programming revision control, obviously. Almost all my personal development projects now exist in SVN, whether they’re .NET applications or UN*X scripts. I’ve seriously considered moving the entire GPF site (sans comics) into SVN to keep all my HTML straight across various systems.
  • Keeping my creative writing documents in sync across multiple systems. Nowadays, I might have a word processor document where I keep story notes and rough scripts, but I might want to work on it in various locations. I used to keep a copy on my LifeDrive to work on, or just copy the files back and forth manually. Now I’ve put the documents into the repository and check them out to work on them, committing the changes when I’m done. When I go to another location, it’s just a matter of updating the local copy and I’m ready to continue.
  • Keeping certain user settings in sync across multiple systems. I recently switched from using Trillian as my IM client to Pidgin, formerly known as GAIM. One of the problems I’ve had with both applications is the fact that I wanted to keep my settings in sync both at home and at work. Again, this used to be a manual ZIP-copy-unZIP process. So I created a Pidgin repository in SVN, check out my settings before I login, and then launch the program. When I’m done, I close the app, commit the changes back to the repository, and refresh the settings when I get to the other location. (Although I did find one irksome tweak with the Pidgin FAQ. What this FAQ fails to mention is that if you use the PURPLEHOME environment variable to move your settings to another location (say, an encrypted file system, which is what I do), it still appends a “.purple” directory under the path you specify. It took me a while to figure out why Pidgin kept forgetting my settings.)

I’m sure most of you could care less, but I thought this would be a neat little anecdote to share anyway. Plus, I haven’t posted in ages, so I wanted to get something up anyway. I’d say if you had any interesting revision control stories to share that you should post them in the comments, but since the comments still aren’t working, I guess it doesn’t matter.

Dump your own core:

You can skip to the end and dump core. Pinging is currently not allowed.

Be nice. Keep it clean. Stay on topic. No spam. Or else.

You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

You must be logged in to dump core.