I’ve been evaluating a new (for me) RCS solution, named Bazaar. I’ve used plenty of RCS systems in the past: PVCS, CVS, Subversion, ClearCase. All of these were centralized RCS solutions. In other words, they all relied upon a central server that acted as the main repository. This means, in order to use them, you must have access to the server. For personal use, this means setting up and maintaining a server, which isn’t always a trivial task. Worse, it means the server must be accessible from everywhere that you’ll need it. I’m currently sharing some script files between about 10 machines, not all of which will have easy access to a central server. This makes maintaining the scripts difficult at best. So, I went looking for a solution.
There’s a new breed of RCS solutions known as DRCS, or decentralized revision control systems. These solutions don’t use a central server concept at all. All of the functionality exists in locally. Changes are made, applied and tracked locally. These changes can be pushed or pulled to other locations, in order to facility typical code sharing scenarios that exist in centralized RCS solutions. A single repository can be located in a centralized location to act much as the centralized server did in those scenarios. Or you can opt to use entirely new ways of working.
In my particular case, I can version control my scripts in a repository that I can move back and forth between work and home using a memory stick. Then in those two locations I can use a local copy as a central repository for the various machines in those networks. Changes are moved back and forth between all of the various branches in a fashion that’s pretty familiar to CVS or Subversion users. So far, I’m really liking this solution.
There are plenty of DRCS solutions available. The big names seem to be Git, Mercurial, Bazaar and DARCS, though there are plenty of others. I settled on Bazaar. Git is basically a Linux only solution, so it’s out. DARCS is reportedly very slow, and doesn’t use a familiar scripting interface. Mercurial and Bazaar are very comparable. Mercurial is reportedly faster (and speed is one complaint I have with Bazaar), but I’m impressed with the development community behind Bazaar.