Jeff Mesnil
Weblog · Dev · Photos · Books

Using Git

September 15, 2008

Git logo

I have switched from Subversion to Git a few months ago as the version control system for all my private projects and some of my public projects and I've not looked back.

The setup can not be simpler (git init in the project directory) and gitweb is easy to setup to browse the repository and its history.

Git is simple to use, simple to learn (with good in-depth and user documentation) and fast.

When I am learning new languages or frameworks, I tend to use an exploratory mode made of trials and errors. I found that the workflow of Git (simple branch creations and merges, stashes, reset) corresponds better to this approach than Subversion (which works best with an upfront design).

One of its great features compared to Subversion is that it distinguishes between the author and the committer.
In Subversion, when an user submits a patch and I apply it, I'm both the committer and the author (I mention the user in the commit message and/or the header's files but as far as Subversion is concerned, the user does not exist).
In Git, when I apply the patch, I'm only the committer, the user is the author of the commit and will remain so in the history, in git blame, etc. (as an example, here is a commit where I am the committer and Clay McClure is the author). This feature is very important for open source projects where your reputation comes from the code you write, even if it is only through patches.

The only area where Git is lacking behind Subversion is the tools. However I don't mind using a shell and Vim for most of the simple and frequent tasks. For advanced ones, gitk and Textmate are good enough for my needs.

I continue to use Subversion for my professional work but for my personal projects, Git is now my main choice (the only exception being Eclipse projects but as soon as there is a Git plug-in which is good enough, I'll switch too).