Know Subversion? GIT or Mercurial.

written by Geoff Bowers on Wednesday, 6 July, 2011 @ 12:02 PM

There's a difference to Git and Mercurial (Hg) when it comes to training developers experienced in Subversion (SVN).

The basic tools for teaching either system are the same: a system primer, and a cricket bat (or baseball bat if you prefer). However the tools are used in different ways depending on the system being taught.

For Hg, the instructor goes through the Hg primer with the student. The student is then left to use Hg with the instructor watching. Every time the student begins to think about branching or merging, the instructor his the student over the head with the bat. This provides a negative reinforcement for the student's SVN branching and merging habits.

The process for Git is much simpler.

At the very beginning, the instructor bashes the student repeatedly over the head with the bat until all brain cells containing any memory of SVN are destroyed. The instructor then teaches the student the Git primer.

To put it another way: according to the philosophy of Git, everything you learned about version control from SVN is *WRONG*. If you think I'm joking, go read up on the history of Git and watch the video of the Linus's infamous Git talk.

So, the road to Git for an SVN team tends to be painful... unless a large portion of the team have already taught themselves Git (e.g. by messing with projects on GitHub).

Hg is easier for SVN users to learn because actions that don't have to be different in a distributed system (e.g. adding and removing files, committing, reverting changes) are similar.

I've taught myself both Git and Hg, so I can do either. It's up to the rest of you Daemonites to decide which pill you want to swallow.

Oh, I should also mention another difference in Git vs. Hg: pricing models for commercial hosting. For Git, the price depends on the number of private repositories (i.e. projects) you want. For BitBucket (Atlassian's Hg hosting service) you pay based on your team size, and there's no limit to the number of private repositories.


(repost from the mind of Daemonite, Dennis "Boomfish" Clark)