I gave a presentation at work today on Distributed Version Control Systems and Mercurial. We’re currently using Subversion, and I’m nudging my co-workers into getting interested in the benefits of distributed version control over a centralized system.
The presentation starts with the pros and cons of distributed systems and gives a brief overview of the top 3 most popular DVCS systems:
I go into the details of why I chose to use Mercurial and describe some common usage patterns for people used to using Subversion.
I then did a live-coding session where I created a quick grails application, added it to a new repository, cloned the repository and pushed changes back and forth to show how mercurial handles merging and history.
I also suggest how developers can use mercurial as a “super client” to enable much of this power while still working on a team that uses subversion.
Overall the presentation was well received, and many of the developers seemed excited about the potential in a DVCS like mercurial. I know a number of them downloaded mercurial this afternoon and gave it a shot. I also spoke with our build guy and one of our architects who both seem interested in switching over.
Here’s the presentation (without notes):
I’ve also uploaded a version of the presentation with full notes on slideshare. Adding the notes makes it too small to read in their flash app, so I suggest downloading the presentation if you want to see them. The notes also include all of the detail in the live coding session (though you have to have grails 1.0.2 or better installed to get the same stuff I did).
I’d be interested to hear from others who have convinced their teams to switch from using a centralized repository to a distributed one like Mercurial.