# Friday, 21 January 2011

This blog post is a repurposing of content I created for a presentation I gave on DVCS on 01-11-2011 to the Twin Cities Developer Group.


What is DVCS?

Source code version control without a central master server repository (think peer to peer).

Market leaders: git, hg / Mercurial

New competitor with potential: SourceGear Veracity



Is DVCS better than non-distributed source control (aka Subversion/SVN, VSS, TFS, etc.)?

Usually, yes, but there are exceptions.  Don't underestimate the learning curve.



What are the Disadvantages of DVCS?

Lack of mature graphical front ends (although people seem okay with TortoiseHg/TortoiseGit), the majority of DVCS users appear to use the command line.

The learning curve for DVCS is different.

There are different complexities like workflow & backup process creation.

Many people struggle with the concept of "no canonical master".

Large binary files don't work well in a DVCS where everyone has a local copy of basically the entirety of every version of every binary file.

There are currently tools to migrate to DVCS, but not necessarily tools to migrate away from DVCS.


Advantages of DVCS – Better Implementation

What could non-distributed version controls systems do better to compete with DVCS?

  • Implement better merging
  • Implement better handling of versioning directories

What are some of the reasons that merging is better in DVCS?

  • Change sets
  • Likely more version history available to work with since smaller check-ins are better supported
  • Better ancestor tracking/usage
  • Better directory revision management
  • Better file rename detection

The battle is not DVCS (git/hg) vs. SVN, but that is how it is often characterized.  SVN is lacking in some areas compared to it's (sometimes commercial, sometimes more mature) non-distributed version control competitors.


Advantages of DVCS – Better Design

What can’t non-distributed version controls systems do?

  • Working "offline" (faster history access, faster commits)
  • Better experience working peer to peer for integration testing
  • QA can manage their own repository
  • Can commit a logical unit of work without tests passing or the code even compiling


DVCS Trends

Where is DVCS catching up?

  • GUIs
  • ALM integration
  • Hard locks
  • User/role permissions
  • Centralized admin, etc.

DVCS in corporations is very interesting to me personally and Veracity will likely solve those problems better than git/hg ever will since they are primarily targeted at open source projects, not corporate/enterprise environments.

Obstacles to an enterprise DVCS - http://www.ericsink.com/articles/vcs_trends.html


Some differences between Mercurial and Veracity