Switching over to Distributed Version Control Systems (DVCS)

I have used Apache Subversion (SVN), a "2nd generation" version control system for several years and am quite comfortable with it. Over the last year, I have found it impossible to ignore the new "3rd generation" DVCS that are gaining mass popularity and gradual adoption, namely Mercurial (Hg) and git.

What are the reasons to go from a centralized to distributed version control system?

  1. Everyone gets a local copy of the repository.
    • developers can commit changes frequently without sending buggy, untested code to everyone else
    • do not need a network connection to commit (only to push/pull to a remote repository)
    • faster commits
    • private changes until ready to share code with the team/world
  2. Easier merging. (Independent of commit step)

What are some disadvantages?

  1. learning curve
  2. integration with existing tools like bug trackers is limited

What/where are some resources?

  1. While at OSCON 2011 I picked up a free copy of Version Control by Example by Eric Sink (pyrenean gold press 2011).
    This book makes a relatively dry topic - version control - interesting. It provides a solid background, has nice diagrams and compares SVN, Hg, git and veracity usage.
  2. Joel Spolsky of Joel on Software has written a very nice six part tutorial series on Hg
  3. Anyone can start creating or cloning projects hosted on github.com, and push bug fixes or feature changes. Whether or not the author pulls your changes is another story.
  4. Analagously, bitbucket.org hosts Hg projects.

Add new comment