Learning Distributed Revision Control Systems

Like it or not, the distributed revision control model is here to stay. Brian Fitzpatrick, a Subversion and Apache developer, told a group of us Purdue students that SVN will indeed be getting distributed features similar to “the Mercurial model.” Many companies are already starting to use DRCS and the rest are on their way.

The quickest and easiest way I can explain a DRCS to a developer who’s only used a centralized revision control system is like this: a DRCS is like all developers having their own local repository. When it’s time to share changes, it’s almost like having a CVS repository of CVS repositories. Among local commits and cheap branching, there are many other great benefits of a DRCS that I wont go into. What I will talk about are some resources and techniques for learning a DRCS.

Enumeration of DRCSs

There are a few major players in the DRCS area, today. They all embody the same general model and feature set but each system also fills a certain niche.

  • Monotone: One of the earlier DRCSs. Written in C++.
  • Git: Created by Linus Torvalds for the Linux kernel project. Written in C.
  • Bazaar: Canonical’s DRVS written in Python. Works well with all OSs.
  • Mercurial: Also written for the Linux kernel project in C and Python. Works well with all OSs.

Videos

Like I’ve said before, the best way to learn anything technical related is to watch tech talks about it. This holds true for a DRCS as well.

  1. Linus Torvalds’ Git Google Tech Talk: Explains why programmers should use a DRCS. Linus is the creator of Git as well as the project it was designed for: the Linux kernel.
  2. Randal Schwartz’s Git Google Tech Talk: Explains how to use Git. Randal is a prominent Perl author and long time Git hacker.
  3. Bryan O’Sullivan’s Mercurial Google Tech Talk: Explains how to use Mercurial and why a programmer would want to use it. Bryan is a Senior Principal Engineer at QLogic, Inc and Mercurial developer.

Books & Documentation

Nobody wants to read massive books and documentation sets on their computer but for reference, they exist. Watch the videos to learn about DVCSs and then use these resources for reference during projects.

A colleague of mine, Michael Olson, has some great articles about using Git and also some commentary about SVN that are definitely worth reading. It’s not up to people to teach you how to use a DRCS, it’s up to you to make sure you don’t get behind the times. If you have trouble or just plain dislike learning new technologies then maybe computer science is not your path.

Comments 5

  1. Randal L. Schwartz wrote:

    Thanks for referencing my Google Git Talk!

    Posted 29 Oct 2007 at 7:12 am
  2. Luke Hoersten wrote:

    No problem! It was a great talk that was desperately needed! Hopefully this will help a few more people learn Git.

    Posted 29 Oct 2007 at 9:17 am
  3. Michael Olson wrote:

    I also enjoyed Randal’s talk. I’m going to be using it in some various bits of advocacy the next few days. He explains particularly well the fact that all you need to know is one SHA-1 hash to know that your repo is uncorrupted — I had a hard time remembering enough of the explanation earlier to get that point across.

    Posted 30 Oct 2007 at 11:11 pm
  4. Luke Hoersten wrote:

    Randal’s talk is great and it’s actually what inspired me to write this article. It was kind of the final piece needed to complete the puzzle for people trying to learn about [Git] DRCSs.

    The SHA-1 hash of the repo isn’t that complex of an idea, it’s just that there are trade-offs of some features for others. The biggest benefit for me would be the handling of binaries, not the guarantee of tree integrity.

    Posted 31 Oct 2007 at 11:12 am
  5. Logan Buesching wrote:

    I’m not sure when they added it, but they now have a “Batteries Included” installer for Mercurial, which would have probably shut me up from all of my complaining about it’s lack of windows support - this should by far be more heavily advertised for windows users.

    Posted 06 Nov 2007 at 1:24 pm

Trackbacks & Pingbacks 2

  1. From OpenRadix.org → Shortcomings of Mercurial on 07 Mar 2008 at 5:16 am

    [...] is, by far, the best revision control application I’ve ever used, with Git a close second. Fundamentally, Mercurial does revision [...]

  2. From Humani.st → Shortcomings of Mercurial on 07 Apr 2008 at 10:25 am

    [...] is, by far, the best revision control application I’ve ever used, with Git a close second. Fundamentally, Mercurial does revision [...]

Post a Comment

You must be logged in to post a comment.