VisualSVN gets Visual Studio integration right

February 15, 2010

I've used three source control plug-ins for Visual Studio. Microsoft's Visual Source Safe (VSS), Redgate's Vault, and Subversions VisualSVN (SVN). Each have their pros and some have their cons."

I’ve used three source control plug-ins for Visual Studio. Microsoft’s Visual Source Safe (VSS), Redgate’s Vault, and Subversions VisualSVN (SVN). Each have their pros and some have their cons.

I’ve never liked VSS as a source code repository, mainly because it runs short of features that make development teams productive. For example, lets say two programmers want to modify the same file at the same time. Well, one dev has to check the file out, while the other dev creates their own local copy. Then, the dev who grabbed the file last has to somehow merge their changes in with the dev who has the actual file checked out. There are two major problems with this:

  • It’s a productivity killer. There is nothing worse than trying to manually merge code. The fact that two programmers have to merge this code creates an expensive bottleneck.
  • It’s prone to error. Let’s face it, humans make mistakes all the time, programmers included. Its inevitable that mistakes will be made during the manual merge.

The Vault client is vastly superior over VSS in many ways. The auto-merge feature, the blame feature, the compare feature, the search filters, and the ability for devs to check out the same file at the same time, makes Vault a pleasure to work with. For the most part Vault handles complex merges fairly well. On occasion, it will trip up and I’ll have to manually merge something that seems trivial. Given the improvement over VSS, it one of those things where if its minor, you look the other way. The one thing that drives me nuts about vault is when the connection to the server times out, Vault (the Visual Studio enhanced plug-in) allows you to edit the file and will put the file in a renegade status. I wish I could change this behavior to warn me then reconnect to the server.

SVN, and the Visual Studio plug-in VisualSVN, keeps things simple. All the features I want are right where I need them. It was easy to install, easy to configure, and provided seamless integration with Visual Studio. There is not a single feature that I need that SVN doesn’t provide. It has the blame feature, it has the merge feature, it lets you manually choose to lock a file exclusively. The best feature in my opinion is the visual way VisualSVN shows you the status of your files. They do a great job going down the document tree to let you see what file(s) is checked out. No more pulling up another view to see your checked out files, VisualSVN shows it to you right in the Solution Explorer window. For example, this shows me that I have the Site.css file checked out. It changes the color of the root, and all parent folders until you reach the file:

VisualSVN Solution Explorer

VisualSVNServer was free and I had it up and running on my Mediasmart Home Server in no time at all. VisualSVN, the Visual Studio Plugin, was $49 bucks.

I’m still learning a lot about SVN and the Vault client that I use at work. I plan on taking a dive into Distributed Revision Control (DVCS) in the next few weeks. I have an open-source project that I’m working on and I want to see what the buzz is about GitHub and Mercurial.