Switching from SVN to GIT

Ecrit le 07 Mar 2009

Yet an other post to say svn sucks. yes it is. But many people who use svn are happy with it and i was happy to.

It’s hard to maintain a trunk when 5 people are commiting on it during the project life. So i have started to look at DVCS (git hg, bzr). I have tryied GIT because of it’s popularity.

At work, someone is using mercurial (hg) and we are two people intersting in GIT. So i have decided to test it but over SVN. it means the central repository is still an svn one.

Here is the way i m using it:

  1. clone the repo (git svn clone blabla)
  2. branche
  3. work on your code (commit, …)
  4. merge on master
  5. git svn dcommit

And you get it, only one commit on the trunk (master) and the power of git to merge, commit, …

Some cool features and properties of git:

  • space on hdd of a git clone < svn checkout (and you get the all history
  • fast, git is damn faster than svn. When you type enter key, you get it (except from git svn clone, because here it’s svn)
  • qgit2 (qt4) is a very good tool (you can browse your svn history, look at diffs, ….)
  • the help on command line. git status give you help for next command you will make

But there are some point i have not found handy:

*git st mygitrepo/ doesn’t work (“is not a git repo” but it is)

  • no default alias (st, co, …) but can be easily configured
  • svn externals can be seen has submodules, but no managed in that way. git svn do not handle svn:externals and you can’t use git submodules over svn
  • eclipse do not manage git (and i know it s a pain for eclipse guys because it break the way plateform is thought)

I hope all that things will be improved in the futur of git, but now i m using git at work. Next step will be code review TTW.