Git
8 November 2007, mid-morning
I installed Git on a couple servers here at work and on my machine at home in order to give it a whirl. Git is a distributed version control system, famous for being developed by Linus Torvalds. It is currently in use to manage to Linux Kernel. Git is quite different than CVS and its successor SVN in that there aren’t any central repositories you pull your work from and submit your work back to. With Git, you can clone an existing repository and it becomes your own sandbox to play in; you can create branches and tags and do all sorts of stuff in your own repository, which no other developer needs to worry about. To actually share your changes, the work flow suggested is that you set up a ‘public’ clone of your repository which you submit your final changes to, and which other developers pull changes from. (You could also just share your actual repository.) Although the system is distributed, a group could still maintain a single ‘main’ repository that everyone pushes their changes to, and pulls from when they want a final build of a product. The big plus I’ve noticed so far is that since you don’t need to talk to a server all the actions you perform on your repository are very fast.
Apparently Git was tricky to use when it first came out. This doesn’t seem to be the case anymore. Setting up a repository is dead easy — far easier than the same task in SVN — and adding files, changing them, and committing your changes is also dead simple. Perhaps things get trickier when you move onto the more esoteric features in Git, but I suspect for most of the work a developer does it works well enough.
Linus gave a talk on Git at Google a little while back. I had never heard him speak at length before. It’s actually an entertaining talk, though he’s a bit of a jerk-ass. And by “a bit” I mean he’s a serious jerk-ass. (It’s been a good while since i’ve been around that sort of arrogance: high school was a long time ago.) I do have to say I find his style of talking kind of refreshing. Presumably he’s waiting for someone else to come along, call him a moron, and show him how he should be doing things.