Visual Source Safe to Subversion

For the last 10 odd years, the game’s data components have been kept in Visual Source Safe. VSS is bad, m’kay. Like any piece of software, it has its merits, especially for a very small team working on a very simple project. I’m not going to turn this into an anti-VSS pejorative tho.

Moving from VSS to Subversion (and then possibly Mercurial) varies in complexity depending on your repository. Ours is ten years old and contains multiple projects, which have danced around the directory tree.

Inconsistent Line Endings

If you’re using Subversion and you get a problem between two branches with “inconsistent line endings” you may be in for a world of hurt.

And so it came to pass…

It Happenethed

I really didn’t think this would happen so quickly. When you’ve been fitting spits and spots of systems together over 6 years towards a goal, you build up an overly active awareness of how much is involved. You’re overly inclined to fill in variables. I knew that the host was easy enough to build, and I’d scripted the mac build for Gophur, so I knew that wasn’t hairy. Recently I’d come to know that now the client and host source is all in one repository I can match source revisions. But, when I tried to put it all together, along with scripting it under Windows … Pop. I think my head just exploded, is that my amygdala on your lapel?

The key to it all was VSoft’s FinalBuilder. There are many build tools, but FinalBuilder is a basically a graphical scripting language / scripting language assembly tool the likes of which you expect from old Amiga tool sets or the Mac. These geniuses of it is delivering the power an old scripting hack like me only images getting from Perl/Python/Ruby/JavaScript/Rexx in a graphical interface.


Well, we went ahead and did it; switched from Visual Source Safe to Subversion. Ahh. The producers see TortoiseSVN and want it, so our data will be going over soon too. Right now we’re running VisualSVN server on our Windows file server and their client for Visual Studio.

I’m now trying to set up commit hooks and running into brick walls. I wanted to avoid having to write something myself and though the Ruby commit-mailer.rb sounded promising. Except, it appears that Ruby no-longer ships with ruby-svn and I can’t figure out where the heck you would get it from.

So, I guess I’ll do something with the Perl version. That’s not so bad, really, I can make it announce commits to the IRC server while I’m at it :) Or, more likely, have it write the announcements to a database and let something else pick them up.