should i use git over subversion

I’ve heard good things about GIT and decided to see whether to use it over Subversion for a project.

The first few benefits of GIT I encountered:

  • Distributed nature/connectivity – you have access to the whole repository even if you don’t have network/internet connectivity
  • Bisect command – to see when a bug introduced
  • Disk space – GIT compresses data well so the whole repository doesn’t take up as much space as one would expect

Disadvantages of GIT:

  • Since it is so new, the tooling isn’t as mature as I’d like it to be before relying on a project.  (This may not be a project for work, but it’s not just version control on my own machine either.)  See below about GIT clients.

Things I’m not sure about yet:

  • Branch handling – “You can commit to your local repository without messing up things for your co-worker” – This seems like it flies in the face of continuous integration.  I want people to be committing to a shared space frequently so we find out about integration issues as early as possible.  This sounds like “developer branches” which I feel are a step backwards.
  • Audit – Where is the official copy?  If everyone has a copy of the repository, which is the official copy for auditing/protection against hackers/etc.

Git clients

  1. Command line.  The command line looks solid.  There is even a command comparison if you use Subversion.  You just download and install.
  2. GUI. (SmartGit) – While this is still in beta, it seems ready.  The official statement is “SmartGit is in pre-release state, but we consider its feature set (for the first release) rather complete. ”  It has been in public milestone status since August (2009.)  When I installed it, SmartGit said it “expires 12/30/09”.  I suppose this is so you don’t stay on the milestone build too long.
  3. Eclipse plugin. (EGit) – While you can get this from the Eclipse update site, it says “are only made available to help the EGit development team use the plugin to develop itself. ”  I tried anyway to see what would happen.  It installed, but I couldn’t find a perspective/view that had to do with GIT.

While the GUI is available for all operating systems (Windows, Linux, Mac’s OS X, etc), it is still technically in beta.

My conclusion

Git looks like it will be really good one day.  For playing with a version control tool. I think it is great.  However, I don’t think it’s a point to recommend using for the project I was thinking of for several reasons.  The two main ones are:

  • The GUI support isn’t there yet.  This project has a lot of new developers on it so I think a good GUI is critical.
  • I’m not yet comfortable with the idea of source control being so distributed.  If something is on one person’s machine, it doesn’t really exist.  Just like “if it isn’t in SVN it isn’t done.”

Further reading:

See the official GIT/SVN comparison