Transition To Git

We may consider a transition from SVN to Git for revision control.

Why?

  • Reduce barriers to new contributors (currently work is spread out among multiple repositories hosted by multiple sources with differing authentication systems, etc)
  • Reduce wasted time in development (git is very fast)
  • Encourage branch-based development
  • Working with Mac bundles (e.g. Max externs, OmniGraffle files, etc.) is very easy, and we don't have to zip them!)

Why Not?

  • No GUI apps on the Mac that are close to Versions or Cornerstone for SVN (Windows has good support include Tortoise Git) -- though TextMate's git bundle is as good as its svn bundle (which is quite good).
  • Nobody likes change.

Implications

How?

Git seems to be a pain in terms of pulling branches and tags over. It gives the appearance of being all automatic, but it's not -- the automatic stuff is all wrong. To do it right, we need to do it the same way that this ruby script does it (don't try getting it as a gem -- that doesn't seem to work either).

http://github.com/jcoglan/svn2git/blob/0ade0f6d04a14f5be19bf8f741d392f9779ea040/lib/svn2git/migration.rb

That said, it appears that Git will make it possible to sanely merge our repositories. See this:

http://stackoverflow.com/questions/277029/combining-multiple-git-repositories

Resources

Tips and Tricks

Redmine Integration