I'd guesstimate most Visual Studio developers have cursed source control at one time or another; SourceSafe is a kludgey, old and hasn't been updated in years (little hint here Microsoft, when you start shipping developer tools that support unicode make sure the source control system supports it properly). SourceSafe may well suffer because it's not used internally at Microsoft (from what I've seen), so there is no element of dogfooding. So there has been a market for replacement source control systems for a while now, and you'd expect them to be mature, stable and above all to not overwrite your code without asking you. You can see what's coming here can't you?

The company I'm consulting for right now uses Vault. Marketed to developers who are "fed up" with SourceSafe it uses SQL as its backend, nicely integrates with Visual Studio and works just like SourceSafe.

Just like SourceSafe. I don't think they meant to mirror SourceSafe quite so much though. Last week we decided to move all the developer boxes into a little developer workgroup (they're not part of a domain for very good reasons). So come Wednesday we all switched, checked everyone could see each other and the build server and off we went. Until Friday when I came to check in some code. Code I had checked out Monday would no longer check in. Vault didn't throw any errors, nor did it unlock the files, it still said they were checked out to me, but in fact Vault checks out code to a combination of your user name, your machine name and your domain/workgroup. As the last part of that combination had changed I couldn't check in.

Well that was easily fixed I though, I'll switch back again briefly, check in the files that were checked out when I was part of the original and check in my files, then switch back. The problem was that Vault, when it failed to check in my files silently checked out the latest version from its repository, overwriting all my changes. No errors, no prompts, nothing. The sinking feeling in your stomach due to lost work is only outdown by the sinking feeling when you may be responsible for breaking a build at Microsoft and the image of the polo shirt looms large in your mind (turns out it was someone else who had broken it, I'd just checked in code at the same time). I don't believe I'd tweaked my vault setup to turn prompting off, although this may well be the case. As you can imagine all the "Prompt me" options are now checked.

Luckily Vault stores a copy of your work before a check-in in a hidden directory relative to your code, _sgbak. That directory held some, if not all of my work, and a reconstruction was possible with a little recoding. Not a fatal mistake, but never the less annoying.

I wonder if the next version of Visual Studio, SourceSafe or Team System will deliver a source control system that just works. I'm not holding my breath.