Article: Distributed Version Control Systems
Since Linus Torvalds presentation at Google about git in May 2007, the adoption and interest for Distributed Version Control Systems has been constantly rising. In this article, Sebastien Auvray introduces the concept of Distributed Version Control, see when to use it, why it may be better than what you’re currently using, and have a look at three actors in the area: git, Mercurial and Bazaar.
Sebastien start out by comparing Distributed Version Control Systems with Centralized VMS:es:
Or a more precise question: Why Central VCS (and notably Subversion) are not satisfying? Several things are blamed on Subversion:
* Major reason is that branching is easy but merging is a pain (but one doesn't go without the other). And it's likely that any consequent project you'll work on will need easy gymnastic with splits, dev, test branches. Subversion has no History-aware merge capability, forcing its users to manually track exactly which revisions have been merged between branches making it error-prone.
* No way to push changes to another user (without submitting to the Central Server).
* Subversion fails to merge changes when files or directories are renamed.
* The trunk/tags/branches convention can be considered misleading.
* Offline commits are not possible.
* .svn files pollute your local directories.
* svn:external can be harmful to handle.
* Performance
After that, Sebastien moves on to describe how DVCS works, which the open source options are, before he comes to the an excellent comparison between git, Mercurial and Bazaar. The comparison includes things line features, model, web access, integration, performance, hosting options and many other things.
If you’re having trouble deciding which DVCS to pick, this is the article for you.