Learning About GIT
It has been a long time coming, but now I’m seriously starting to look at Git. Git is the content tracker used by the Linux kernel folks, initially developed by Torvalds.
At Westermo R&D we use Subversion for our daily operations and today I started migrating the software to Git. Mainly just to get a comparison of performance, storage size and to explore how we can use Git on top of svn to become more productive when working in parallel in different teams. We’ve tried this quite extensively before, using Subversion branches and even though it’s a heck of a lot easier to use compared to CVS its strength is not in merging.
The new merge tracking feature in Subversion 1.5 and features like detection of tree conflicts in, the recently released, 1.6 helps. However, working in small teams, disconnected from a centralised server is still not possible with svn, OK sure there is svk, but honestly, doesn’t that make you think of CVS and bolting on features after the fact, similar to CVSNT or OpenCVS. Intriguingly bizarre projects. :-)
The reasons for trying out Git are not only related to any short comings of Subversion, Git has lot of strong points on its own. See here for instance:
- SHA-1 hashes for each commit, makes it possible to easier detect history corruptions
- Local developer branches
- Fast branch switching
- Cherry picking commits from other branches, easily
- Stashing/Shelving, i.e. put aside things you’re working on for later
I’ve started collecting a set of links that seem to be useful:
- Learning git-svn in five minutes
- The git-svn(1) man page
- Git - SVN Crash Course
- An introduction to git-svn for Subversion users and deserters
- How to use Git and SVN together
- A guided tour of emacs-git
- Work with Git from Emacs
- EmacsWiki:Git
I’ll conclude this post with two YouTube entries, first is the, now classic, presentation by Linus Torvalds on what Git isn’t … and then Randal Schwartz on what Git is …