A few days ago, I posted a blog entry mentioning my foray into SCM systems. The purpose of the investigation was two-fold: 1) to move away from VSS (Sourcesafe) and 2) to enable remote source code access. I work with a client out in California routinely and using VSS is impractical in this situation. It didn't make sense not being able to sync up our code every couple weeks when I went to Santa Barbara, and then when he travelled here to SLC not having a SCM...well, let's just say that it hampered our work. Yes, we found ways to work around the system and we've been pretty effective, but it became too painful, plain and simple.
We considered using SOS (Source Offsite). SOS runs as an agent over a VSS repository, TCP/IP enabling it. This would be great - except that we'd still be using VSS which would have violated goal #1. At my previous employment we used SOS in maintaining source code and sharing it with our remote client site. It worked well, but VERY slow. Now, if I'm not mistaken, the server was patched, rebuilt, or something and the perf was noticeably better.
Of the SCM systems we were investigating, the two that stood out the most were SourceGear's Vault and PerForce.
I've heard nothing but good about PerForce. There seems to be a very strong community backing. I downloaded it and started to play with it. To be honest, I really liked it, though it was at first a bit confusing. I attribute the confusion to my VSS background. In PerForce the terminology is quite different from VSS (e.g. 'Open for Edit' vs 'Check Out', 'Submit' vs 'Check In'), but I found a terminology differences document and that helped substantially. Once you look at it and think about it, though, it's really not that bad. After installing a Visual Studio plug in, I was up and going. I was very impressed with the speed and ease of use of PerForce (even though I was running it on a Virtual PC).
Vault, on the other hand, is a relative newcomer to the SCM world. Written purely in C#, and backed to SQL Server, this was an intriguing offering. After downloading the single-user trial (free BTW) and playing with it I fell in love with it. Perhaps the biggest advantage to my getting up and running here was that it was built to look and feel like VSS.
We decided to go with Vault as our SCM system for the following reasons. PerForce offers many of the same capabilities, so this list isn't a set of “Vault has these and PerForce doesn't“ features.
- Familiarity (no learning curve)
- TCP/IP capabilities
- Transactional check-ins
- Simplicity to install
- The backing database automatically incorporates itself into my database backup maintenance plan
- Price ($)
- The ability to turn off Vault being my primary SCM (I didn't see this anywhere in PerForce). That way, I can still fall back and use VSS for my own and legacy projects - very important!