Evaluating tools is sort of like judging art. The two questions you should have about a work of art are, “Do I like it?” and “Is it important?” They’re completely separate. You may not enjoy the music of The Beatles, but that doesn’t change the fact that they were hugely important in the evolution of popular music.
When I’m looking at tools, I try to keep both of those questions in mind. I don’t care for Enterprise Java Beans, but it was important for me to know what they’re used for and why they’re important. Git, the distributed version control application, has been getting a lot of attention lately. I haven’t had a chance to take much of a look at it myself, and I’ve been wondering whether I would like using it. The excess hype has awakened my inner skeptic, but I’m still very curious.
In the meantime, Ryan Tomayko has written an outstanding piece of analysis that answers both my questions. It explains why developers might enjoy using Git, and its significance. What’s important about Git is that it allows you to adapt your version control usage to your working style rather than adapting your work style to Subversion or whatever system you use, in that it allows you to manage exactly which changes you check in at any time, including multiple changes to a single file. Ryan explains how this works by describing the “Tangled Working Copy” problem and how you go about solving it in Subversion and Git.
I never run into Ryan’s “Tangled Working Copy” problem because I have adapted myself to be a creature of Subversion. I am always very mindful of what’s in the current change list and when I want to commit it. But I shouldn’t have to work that way, and it’s very cool that Git lets you escape that model. It seems that’s the important thing about Git.
I wanted to flag Ryan’s article not just because it demystifies some of the Git hype for those of us who are still using Subversion, but also because it represents what blog posts that purport to provide analysis should aspire to.