It’s all about Git
Apr 9th, 2008 by phil
Git seems to have gained a lot of traction lately. Just last week the Ruby on Rails core team announced that they are moving the official Rails source repository to Git. The core team took a lot of flak for the move, but I think it is a good one.
Rails will be hosted on the upcoming Github site, which looks promising. Of course, Gitorious is a similar service that has been around for a little while and repo.or.cz has been around for longer still. The cool thing about these sites is that they can provide advanced version control hosting due to Git’s simplicity. Github, in particular, has some impressive features.
Many people who are used to centralized version control systems don’t immediately see the value in a distributed system like Git. I think that moving from Subversion to Git is like moving from Java to Ruby. If you write Ruby code like you write Java code then you are likely to be disappointed. In order to get the most from Ruby you have to change the way you think about software development and latch on to concepts like duck typing and metaprogramming. The same is true of Git. If you use Git like you used Subversion, it is going to be a disappointment. Once you are comfortable with the distributed SCM model, and begin to take advantage of features like cheap local branches, then you will be much happier with Git.
Tim Burks says that with distributed version control systems like Git “‘the world is flat’ for programmers”:
All participants have the freedom to make whatever innovations they want and the opportunity to promote their changes to the public. Because all repositories are equally functional, the project leader has the ability to act as Brooks’ chief architect, pulling and filtering changes back into his or her personally-branded version.
This is how Linux kernel development happens and it is surprisingly liberating. Development tools tend to be quirky and we accept the little oddities as the cost of doing business. We become insensitive to the quirkiness and accept it after a fashion. These little nuisances wear grooves in our daily development routine and it can be hard to escape those grooves.
Ryan Tomayko describes a thorny version control problem and how Git solves it handily. The point isn’t that Git has Feature X which other systems lack, it is that Git does not impose unnecessary cruft on your workflow:
The thing about Git is that it’s oddly liberal with how and when you use it. Version control systems have traditionally required a lot of up-front planning followed by constant interaction to get changes to the right place at the right time and in the right order. And woe unto thee if a rule is broken somewhere along the way, or you change your mind about something, or you just want to fix this one thing real quick before having to commit all the other crap in your working copy.
It is different, but sometimes different is good. It is also frustrating and the interface can be a bit odd at times. But the interface is getting better and the frustration subsides as you begin to “get it.” All in all, now seems to be a good time to get comfortable with Git.




