Stupid source-off-site

When you find yourself writing a script to test if your source control system has broken your code again – well, that’s not fair, I’ve already known for years that we have to stop using SourceSafe/Source-Off-Site.

I was wading thru a list of supply-related bugs today and I finally realized that they were all linked to the absence of factory linkage. A quick check of the test server’s log files revealed it had only once verified supply linkage. Argh.

It all boils down to “are we there yet” (the housekeeping function checking to see if the seconds since epoch were greater than the number of miliseconds since epoch + 5). Every now and again something I’m doing with SOS overwrites that file with an older version. Gah.

The real reason we haven’t switched source control is our requirements.

1- Has to support file links (sourcesafe calls em “shares”): I have to be able to share the file “pn/host/chat/chatServerTrackedObjects.cpp” with “pn/ww2/ww2ol/src/chat/” such that I can check it out and edit it in either location.

2- Has to be cross-platform: Windows, Mac, Linux

3- Has to have a front end that is friendly to non-coders (e.g. Eclipse’s Team Sharing for CVS/SVN)

4- Has to be integratable into Visual Studio and/or Multigen/3D Studio/etc

I took a brief look at Perforce; SVN may be an option but seems to need a lot of hand-holding and babysitting. Frankly, the number of pages you get when googling “subversion database corrupt*” is a huge turn-off.

There seem to be a bazillion other Source Control options floating around today, and frankly aside from CVS, SVN and Perforce I don’t even really know what else is an option (Vault isn’t because SourceGear, the people who brought you Source-off-Site to make accessing SourceSafe possible from Linux, decided not to do a Linux version of their source control solution).


Subversion dropped bdb as the default backend some years ago, and AFAIK that was the end of database corruptions. Nowadays there’s something called fsfs, which is supposedly good.

Subversion fills requirements 2 and 3. Besides Eclipse integration, there’s Windows shell integration that’s supposedly good. I have no idea about requirement 4, but I’d expect there to be plugin for Visual Studio. Requirement 1 might be a problem. Subversion handles symlinks well on UNIX, and I guess this might be an acceptable solution to the problem – on UNIX. I have read that it checks out both files as separate copies on Windows, but I never noticed any explanation about behaviour upon commit on Windows.

Why no AlienBrain in the consideration? Kinda expensive to buy in but maintenance isn’t too terrible. And the artist edition is pretty friggin awesome for non-programmers.

Have you inquired about that? One of the features listed under Version Control is “file shares” and I found this in their 7.5.2 release notes – “- GetLatest on file shares (links), MERGE option will not be proposed when needed (as opposed as what is proposed with non-links objects).” Appears to fit that requirement on cursory glance. Maybe give them a call.

I mean post some linkage :)

I don’t know if it meets all of your requirements, but if you use the file system subversion option it NEVER gets corrupted. The Berkley DB version does sometimes. I’ve used SVN for a couple years both at home and at jobs and it’s always been very easy to use and dependable. Gag anything is better than SourceUnSafe. if you are going to choose between CVS and SVN its a no brainer, SVN. Perforce is nice but $$$.

Ah, sorry.


You can find the rest on there. Avid bought them a few years ago. I know we’re looking at using it, especially for the remote collaboration server.

Wow! Just looked at what you guys have paid/are paying for your current solution. Yeah, Alienbrain may be exactly what you want. Pricing is very comparable and a total bargain compared to the functionality you currently have.

I would think that the integration capability between Trac and Subversion would pretty much cement that as a fore-runner… what’s it missing that’s making that a showstopper, other than the history of corruptions?

I’d throw 3 and 4 on there as well given my experience with it as a non-programmer, plus the corruptions I’ve witnessed of our database.

IMHO there really are only two possible source control options available to game companies, especially those with less than 200 people and no dedicated tools department: Perforce or Alienbrain. Nothing else out there offers the ease of integration with every aspect of your pipeline. In a games company environment it has to be quick and easy to source control more than your code base and give the team leads and producers the ability to quickly assess the progress of their team’s tasks.

We use SVN and it sucks for anyone not a programmer. If I were to flip through there right now, I think I’d find maybe 5-10% of source files from our artists and maybe half of those would be complete enough that I could open a scene file and have every asset it uses. Why? Because it’s a giant PITA to commit/check-in/check-out your work. You’ve got texture source files in one directory (of which there are usually 2-10 versions of), the flattened copy(ies) in another, the compressed versions in another, scene files in another (which in some programs like XSI is actually an entire set of directories and let’s not forget there’s a few versions of those), exported models in another, animation files in another, and then all of those exported files have to each go into a different directory (of which there are usually dozens).

I have no idea how CRS’s directory environment is set up but I imagine it isn’t grossly different than ours in complexity. What I can say is that in our structure, if I were to make a single simple model it can easily take up to 1 hour for me to commit everything and involve me looking in anywhere from 5-20 directories for the source files. So what happens? The artists all commit their finished work once a week and maybe they’ll take the time to commit the source files as well but I seriously doubt it. We’ve lost more time and money to work not being committed by artists than I could possibly care to admit. Certainly enough to warrant the purchase of a solution rather than resorting to open source.

And God help you if you need to find a wall texture or something. Holy crap! Just try and differentiate what’s what and which directory it’s in.

Programmer’s are fine with SVN. It’s no biggie for them. What artist’s want is something like Adobe Version Cue but have it work worth a damn and integrated into every program we use lol. We don’t want to go clicking around in dozens of directories to commit/c-i/c-o. We want to go into the menu bar of that program or one GUI and be done with it.

FWIW, Ollie, from an artist and team lead’s perspective I’d be much more interested in Alienbrain than Perforce for the simple reason of thumbnails for most everything, visual version history, commenting/markup, messenger, and management tools.

And didn’t we sit through a Perforce demo to try and win those LCDs? LOL I swear that’s who gave that “discussion” *cough*salespitch*cough* on source control solutions.

I’d be careful of AlienBrain. Although it may be good for artists, it’s command line tools leave a lot to be desired. We are also having a problem integrating it with CruiseControl: it seems to be leaving connections open until the pool is consumed at which point the rest of the build start failing.

That is on my end anyway. I have heard nothing but adequate reports from developers and awesome reports from artists using the system here. Our other source control system is Perforce which has excellent integration with our other tools (JIRA for issue tracking and CruiseControl). No problems there and the devs are not complaining about it either. Not so good for art assets however.

Oh. Apparently since I started my blog I am not Fridge anymore. :-)


AlienBrain would cost us at least $13,000 + ~$3,000 year. Yeah, right.
Perforce would cost us $8,000 minimum.
SVN, free. :)

I believe SourceSafe is paid for here. Where are you seeing prices to suggest it’s so expensive?

Were you not using the TortoiseSVN windows front end for subversion? I’ve used that on another project and found it incredibly easy to use:
Everything I needed available at a right-click on any file or folder.
/me not programmer

Is your file structure dictated by your game engine or something? It sounds very painful.

We’re using Visual SourceSafe 5 – frankly we didn’t want to put any more money into VSS (a product that is notably not used by Microsoft; any source control system that is developed using a different source control project is clearly not a good buy)

AlienBrain has some very interesting workflow stuff, but I’m not sure we’re not already too long in the tooth and too small now to get sufficient benefit returns from it?

Re: Price
SourceSafe + SourceOffSite = at least $10k up front plus maintenance from my quick look on MSDN price wizard and SOS’s price sheet. But you’re right on the bulk of it being money spent. Now you’re just paying $130ish per seat in maintenance just on SOS.

Yeah, we use Tortoise. It is easy to use but our engine requirements made it a PITA. Since we switched to Unreal it’s a bit better in that it will put the final packages into the correct directories rather than doing it by hand. The actual act of committing was never really the issue, it’s the shear volume of buried directories you had to hunt through that made it so time consuming. I ended up having 6 folder shortcuts on my desktop just to get to the top of each directory structure that I’d then have to dig through to find the files.

Re: Return on Investment
The $10,000 + maintenance question. :) I don’t know. It’s always a tough question every team has to sort out for itself. At what point does a tool pay for itself? At what point does your current solution end up costing you enough to offset another tool’s cost? All very tough questions, especially when your team is the size it is and on-site. I’ll certainly be interested to hear what you guys come up with and how it’s working for you though. ;)

SourceSafe and a couple of SourceOffSite licenses (we only need a couple) would run us less than $5k when I run the price.

AlienBrain: $13,000 + ~$3,000 year
Perforce: $8,000
SourceSafe 2005: $5,000
SVN: $0

The pretty and “flavor of the month” ones still lose on $$. To estimate $ vs. utility, we’d have to figure out how much we’re “losing” with the current system. I don’t think we’re losing much (opportunity cost wise). So the impetus to change to something non-free or non-already-paid-for is very low.

Psst: try googling for “mysql database corrupt”, see how many hits you get. Oh my! MySQL must be dangerous and unusable! Not.

Once a tool — particularly something with a database — reaches critical mass, there will always be users messing up the database, ram or disk gone bad, etc. The net will be flooded with such stories.

Do you really thing subversion would be as popular as it is if it were that dangerous? :-)

Ahh – you’re assuming that I’m merely basing my fear of SVN on a quick google; the google merely confirms my first-hand experience of Subversion and the general reportage I used to get from people who tried SVN.

I think SVN is popular because (a) it’s free, (b) it does some things that some projects really need that CVS doesn’t offer and a lot of projects need some kind of source control but don’t really make a lot of use of it.

git? bitkeeper?

Leave a Reply

Name and email address are required. Your email address will not be published.

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

You may use these HTML tags and attributes:

<a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <pre> <q cite=""> <s> <strike> <strong> 

%d bloggers like this: