Liquid Media's Apps

I finally "git" it

Yes, I know that's an awful joke... I have many more...

Git has been exploding into the Open Source (at at least Ruby/Rails) world throughout 2008. I didn't get it. What's wrong with Subversion? Why would anyone want a distributed version control system? Centralized versioning was difficult enough! Branching is such an agony that I avoid it in every project I can, and only use it at times I must. Who in their right minds would invite the chaos of a distributed versioning system? Madness!

I was saddened with every blog post that a project I cared about was moving to git. All too often I'd find a package I liked, only to find that they moved off of subversion 3 weeks earlier and were now on Github. With a sinking feeling, I was starting to realize that I wouldn't be able to avoid this madness. Soon enough I would have to look into Git and become part of this decentralized nonsense. Talks at Ruby Fringe seemed to sneer at anyone who wasn't on Git. It was inevitable.

A few days ago I was working with the Acts As Solr1 when I realized with sadness that it, too, had followed the inexorable slide to Git and Github. Why, oh why?! I asked the heavens! It finally struck me when I looked at the acts_as_solr network graph on Github:


I studied it for a while, and then I realized the brilliance of a distributed version control system and of git! No longer was there a single stream of development. There was no more gatekeeper to a project. Forking was not just allowed, but encouraged! I could make my own fork of acts_as_solr, and and pull in any changes that were of interest to me. Similarly, any changes I make to my branch could be incorporated by those responsible for the more "main" development streams. This is actually, in my opinion, the best feature of git:

All too often in my work I need to make change to a project that lives elsewhere on the 'net. Usually it is a bug fix or a feature addition to an OSS project of some sort, such as Rails or a Rails plug-in. Especially in the case of Rails, getting the feature incorporated into the core is rather onerous, but unless I do it, I will be forever patching code with every new release. Git will allow me to fork the project, make my patch, and constantly merge in new versions of the code from the core development stream(s). Git makes forking and merging all but painless. Even more so, with projects such as GitHub, git lowers the bar for contributing to an OSS project. I can make a change to my own fork of acts_as_solr, and if it gets noticed by the core stream(s), my change can be incorported! If it doesn't, then it isn't incorporated. It's not a problem for me either way, and everyone else only stands to benefit.

Now knowing what Git is about, I'm installing it and slowly switching all my plugins over to the git-managed repositories. I'm suddenly much more interested in making changes to OSS projects and releasing my changes into the wild. They're there for anyone to take advantage of if they want to!

I expect you can start watching for branches on my github account at http://github.com/pauldoerwald.

1 Acts As Solr exists at several URLs. http://acts-as-solr.railsfreaks.com/acts_as_solr seems to be the official one. http://acts-as-solr.rubyforge.org/ seems to be deprecated. Don't forget about the Google group at http://groups.google.com/group/acts_as_solr which is where all the discussion takes place. Last but not least, the development appears to be on Github at http://github.com/railsfreaks/acts_as_solr/, but the 'railsfreaks' branch is far from being the active branch, so be sure to dig deeper!

Tagged development, distributed, git, github, and version control.
blog comments powered by Disqus