Intro to Distributed Version Control (Illustrated)

Traditional version control helps you backup, track and synchronize files. Distributed version control makes it easy to share changes. Done right, you can get the best of both worlds: simple merging and centralized releases.

This is a companion discussion topic for the original entry at

[…] CT wrote an interesting post today onHere’s a quick excerptMy suggestion is to start with Subversion, get a grasp for team collaboration, then experiment with a distributed model. With the proper layout a DVCS can do anything a centralized system can, with the added benefit of easy merging. … […]

[…] Update: the following appeared a few days after my talk, it is very good, aside from slightly bogus listings in the “disadvantages” section:  |  […]

Your git link goes to instead of

In any case, that was a good article. I’ll give it to my friend who I have thus far been unable to articulate the benefits of dvcs and git to.

Whoops, thanks for the tip! Glad you liked the article :slight_smile:

[…] I need to read this primer on Distributed Version Control a couple more times to be sure I fully understand it but at first glance it seems to be an extreme very of a developer isolation model. We attempted something like this on a past project and it failed miserably (mostly due to our inability to force timely sharing of changes… developers can be stubborn). […]

[…] Intro to Distributed Version Control (Illustrated) | BetterExplained (tags: p2p programming management) […]

That’s for the article. A more detailed analysis of the advantages of DVCS can be found here:

Hi Ian, thanks for the info. I took a look and the article seems very informative :).

[…] […]

Thakns for the guide. I’ve been putting off developing something very similar to this for a couple of months and now I don’t need to.

What did you use for your diagrams? They look cool :slight_smile:

Hi ct, glad I was able to help. I made the diagrams using PowerPoint 2007 – there’s more details in the comments for this article:

[…] Intro to Distributed Version Control (Illustrated) (tags: scm mercurial programming) […]

But isnt this in clearcase ucm / multisite for years? each developer has his own developer streams on which he can work independantly and there is the integration stream. each project has an integration stream and all streams can deliver or mergecopy to each other. on each stream there can be multiple views.

Hi Cogmios, thanks for the info. I’ve never used Clearcase, but from Wikipedia it appears as both client/server and distributed, which is pretty interesting (along with its view model). Nope, these ideas are not brand new – just wanted to explain them :slight_smile:

[…] Intro to Distributed Version Control (Illustrated) — все, что вы хотели узнать о распределенных системах управления версиями […]

Clearcase UCM is not a distributed version control system, and neither is Clearcase multi-site.

Clearcase UCM is hand holding of branch creation and merging of changes between streams, ticket tracking integration etc. It’s the Higher-Order Perl of Clearcase. Underneath it’s just a centralised VCS with branches.

Clearcase multi-site is form of VCS replication. Multiple sites can be defined and a replication schedule defined. Each branch is mastered in one site, i.e. writable in one place, and a read-only copy to replicated to the other sites. Mastering can be changed. And one can merge from a read only (remote) branch to local branch with no problems. The merge tracking is good, if slow, but does have some bugs that can surface if you have a slow network.

So ClearCase multi-site is kind of like a distributed VCS, however only the centralised ‘sites’ are the nodes of the web, unlike the contemporary distributed VCS’s in which every machine or even working copy is a node in the web.

Hi David, thanks for the details! From your description, it seems like ClearCase is somewhere between a regular CVS and DVCS, by allowing to merge from multiple sites (even if not every working copy is independent). Appreciate the info.

Awesome. Thanks. You could get a job as a professional communicator.

Explaining the concepts with those nice visual graphics is great. Pretty hard to explain the details of configuring Eclipse that way, though.

Thanks for the comment – maybe I’ll try getting into that eventually :). Yep, I agree you’ll always need the manual for certain things (but nearly anything can be more clear with a simple diagram!).