If you have developers offsite or otherwise working in a disconnected manner, version control can be a challenge. Traditional centralized version control systems like Team Foundation Server and Subversion use a central server to be a “single point of contact” and maintain a canonical version of files, which is a tough paradigm for distributed teams to work with. Thankfully, a new breed of version control systems, called distributed version control systems, do away with the need for a central repository (though you can make one if you want). These version control systems make life easy for disconnected teams to work. Here are five that work well for teams spread across time zones and geographical areas.
Git is one of the most popular distributed version control systems. Originally written by Linus Torvalds (and distributed under the GPL) to serve as the repository for Linux kernel development, it has gained widespread adoption among groups of individuals working together. For teams that do not want to handle their own server, Git is available from a number of providers, the most well-known of which is GitHub.
Mercurial is another excellent distributed version control system. I personally like it a lot, especially used in conjunction with the TortoiseHg plugin for Windows and the VisualHG plugin for Visual Studio, which makes Mercurial as “built-in” smooth as Team Foundation Server. Like Git, Mercurial is open source, and it has a number of commercial hosts like Bitbucket. Also of interest is Fog Creek’s FogBugz project, which adds bug tracking to Mercurial, and its Kiln application, which puts a ton of project management and team tools on top.
CodePlex is a source code hosting site run by Microsoft. While it is not a separate version control system by itself (you can choose between Team Foundation Server and Mercurial hosting), it is set up to allow full project management. CodePlex can be used directly from Visual Studio, which makes it a good choice for .NET developers.
Maintained by Canonical (the makers of Ubuntu Linux), Bazaar is one of the older distributed version control systems, debuting right around the same time as Git. It too is open source and free, and can be used in a hosted offering (including SourceForge). Something that sets Bazaar apart is its ability to work well with other version control systems, even non-distributed ones like SVN, which makes it a good choice for remote workers on a project that’s using a centralized version control system.
BitKeeper is the granddaddy of distributed version control systems. There was a good bit of controversy around its licensing (it is not open source) and the use of it in the Linux Kernel project. As a result, Linus Torvalds took a lot of the ideas he liked in BitKeeper and wrote Git. BitKeeper does not have any hosted versions that I can find, and it is proprietary software requiring a paid license for commercial use.