I’ve used many-a revision control tools during my software development career, beginning with Visual Source Safe, migrating to SourceGear’s Vault followed by a long and fantastic relationship with Subversion and now, in my own personal projects, git. By far my favorite has been git.
Ladies and gentleman, I’m telling you now: Distributed revision control is where it’s at!
Source Safe wasn’t… bad. I must admit, however, that I haven’t used Source Safe since my previous employer abandoned it in favor of Subversion over three years ago. I remember one specific case, however, in which Source Safe set the contents of a recently committed file to 0 when the server ran out of disk space (as in, an empty file on both the repository server and my local file system). Pretty neat trick, Source Safe! Lucky for me I had a local backup copy. Needless to say, Source Safe didn’t exactly prove to be entirely stable for the organization and it was a very welcome change when the company migrated to Subversion.
Vault, a far superior successor to Source Safe by SourceGear, is actually quite nice, and I use every day with my current employer. I’d love for us to move to Subversion (up until recently, I used Subversion religiously on my local development box) because Subversion is superior to Vault in branching and merging (at least, on the version we’re using). In fact, that’s my only complaint with Vault: Branching is a little more complicated than it should be.
Subversion (coupled with TortoiseSVN on Windows or through the command line on OS X) was, for the longest time, my all-time favorite software application. Period. I loved it! I kept almost everything in a Subversion repository, from local documents to, of course, source code. Great branching and merging features. Rock solid. I had a particular appreciation for the model and overall simplicity.
And then I found git. Oh man, where have I been for the last three or four years?! Wow! What a great application! git is very fast, that was the first thing I noticed about it. Second, in git, everything is a repository: Your local working copy is a repository that can be committed to, rolled back, etc. You add and commit to your local repository! When you’re done, you push your changes to the master repository, if that’s how your project workflow is designed. Of all of the revision control applications I’ve tried, git is the most flexible and easiest to adapt to your organizations revision workflow.
Are you using revision control? Which one? Tell me about it!

