As many Windows developers know, there is no source control system that is as easy as Microsoft Visual SourceSafe. It comes with many versions of Visual Studio and is the justifiable default. We’ve been using it for many years now, and laughed when we saw other developers keeping multiple directories with various versions of source code on their hard disks. Seriously, if you are doing that, you really need to do yourself a favor and start using SourceSafe. It gives you a safety net to easily go back to known good points in your development, as well as quickly determine what code you have changed. It will also shield your from other people’s code changes, since it will do the painful merging for you at checkin time (you only have to resolve conflicts when the same lines of code are changed by someone else; most notably, in resource.h and the .rc file!) Once you try it, you will feel so much more secure, that you will not go back. SourceSafe looks like Windows Explorer, so you have very little to learn. You will be up and running very quickly.
Alas, we stayed with SourceSafe as long as possible, but eventually outgrew it. When remote subcontractors became involved in our projects, SourceSafe no longer suited, as it is far too slow for remote access over a VPN. We also got tired of running Analyze all the time, and it was a constant reminder that we were using a not-totally-supported product. We also yearned for integrated bug tracking (where you can associate a bug number with a checkin, and thus easily access the code from the bug report). But what else is there beyond SourceSafe?
We were looking for a package that was as simple and inutitive as SourceSafe, yet more reliable and usable to access remotely. Since SourceSafe is free if you have Visual Studio, cost is also an issue. The short list included:
SourceGear – designed similarly to SourceSafe, but solving the reliability and remote access problem. Con: expensive, setting up server is complex.
Perforce – a rock solid package, but depot/clientspec concept is complex, P4Win is not pretty. Con: expensive, setting up server is too complex, Diff and merge tools are lacking, Integrated bug tracking with Bugzilla doesn’t work well.
Seapine – Many of the same benefits and disadvantages of Perforce, but on the whole more user friendly.
Subversion – at first, this OpenSource project left us cold, but after some friendly hands pointed us to the TortoiseSVN client, we were quickly won over by it’s simplicity and well-constructedness. But installing the server still was very complex, and there was no integrated bug tracking.
Solution: use Subversion, but through a hosting service The server is already set up, and the service also adds integrated bug tracking. We’ve been using Unfuddle.com for about a month now and are very happy with it. We also tried and were reasonably happy with CVSDude.com but prefer the more polished UI of Unfuddle. As well, the proprietary Unfuddle Ticket system (bug tracking) is just superb, much better than Trac (which is another open source bug tracking project that supplements Subversion).
“Hosted” you say? Surely you would never store the crown jewels of source code on someone else’s server. No sir! Well, admittedly, we held off on using a hosted solution for several months until the pain point of not having a collaborative version control system forced our hand. We simply were not going to invest in setting up an Internet-facing server of our own; not only is this not our expertise, but it also requires getting a business-class (symmetric upload and download speeds) broadband connection for it. So it was hosted or nothing.
And we do take precautions. All Unfuddle access is via https. As for storing the source code on a third party’s server, that is really no different than hosting your company’s e-mail on someone else’s server, and exchanging source code with other developers through e-mail attachments is quite common. So when you look at it like this, you could argue that the risk of using a third party server is the same for both e-mail and source code, and that risk is deemed sufficiently low for both practices.
We highly recommend Unfuddle for mere mortals (like us), and if you are more of a propellor-head, then you may be more at home with CVSDude.