There are over 2 million search results when you Google “git sucks”: Because it does

Posted: July 30, 2012 in Uncategorized

i hate gitGo ahead.  Google it yourself.  The consensus is in: git sucks.  Lots of people think so.  But developers keep using it in greater and greater numbers.

Nick Farina writes a typical story about how he made his developers use it, and how it sucked and scared the crap out of them and the developers hated it, but they use it anyway.  He calls git a Model T and says:

Git is not a Prius. Git is a Model T. Its plumbing and wiring sticks out all over the place. You have to be a mechanic to operate it successfully or you’ll be stuck on the side of the road when it breaks down. And it will break down.

He goes on to say, “Git’s greatest shortcoming, which is that Git’s terminology and syntax is fracking inscrutable.”  The boldface is all his, let me assure you.  And he adds this too, “And because of Git’s explosive popularity, it’s a total Emperor-Has-No-Clothes situation.”

Yeah right.  It is an Emperor-Has-No-Clothes situation.  And you can read his post to the end and it never does tell you why git is actually a good thing, just more about how to survive git.

Here is more ranting from Scott James Remnant.  I don’t know who he is, probably someone else who is not smart enough to get git.  That’s what all the git guys will tell you when you ask why it sucks.  They’ll look down their noses in that oh-so-superior way and they will say, “Really, you don’t understand git?”  Then they will give you some flavor of how you don’t understand the underlying simplicity because you’re probably still stuck on the old paradigm you learned in your pre-git life.  Scott gets it right:

My quote of the day:

“Git is hard to use if you are not used to its workflow.”


Git is hard to use.

Yep, git is simply hard to use.  The comments on any of these posts will inevitably include examples of this genre (from Scott’s post):

A lot of people seem to hate git before they get converted.
See you in a few weeks for an “OMG git is awesome post” !

Yeah, but what exactly does happen at that “OMG git is awesome” point?  What does git do that is so awesome?  Is it really awesome, or did we just simply learn enough of the gibberish by rote that we have effectively quit hitting ourselves in the forehead with a claw hammer?

You’ve got sites like “Think like a Git” that readily admit git is hard and most things being done to help don’t really help.  Still no section there on why git is awesome if you stick it out long enough to understand it.  Apparently you need to think about your source control and versioning in terms of graph theory.  Great.  Just what I always wanted to do.

How about a site for git haters to vent?  Of course there is a git lover’s site to keep the balance.  It’s just that 78% hate git and only 22% love it.

Steve Bennett sticks up for git for a sentence or two:

Git is the source code version control system that is rapidly becoming the standard for open source projects. It has a powerful distributed model which allows advanced users to do tricky things with branches, and rewriting history. What a pity that it’s so hard to learn, has such an unpleasant command line interface, and treats its users with such utter contempt.

He then condemns it with 10 things he hates about it.  Hey, I think he has said the only thing I see to recommend it–it is rapidly becoming the standard for open source projects.  If you need to manage an open source project, you’d probably better figure out git.  If not, I am still struggling to understand why git is a good thing.

How about this neat slideshow “Git Sucks and Why You’ll Use it Anyway“?

Basically, it says of other systems:

–  Lock/Checkout systems are ancient and make collaboration difficult.

–  Copy/Modify/Merge (Subversion) sucks because it makes forking and experimentation difficult.

–  Distributed Version Control:  git.

It does admit that git is complex, unintuitive, obtuse, and that the documentation is “distributed”.  Aw, I think that last one is an attempt at humor.

He says you’ll use git anyway because it encourages contributions, encourages experimentation (because branches are easy), and because offline access rocks.

That all sounds like pretty critical stuff to a loosely confederated group of developers who seldom communicate much but who must collaborate on an open source project.  They will want to go off on their own for long periods to do as they wish with the code until it is just right, and then they will shepherd it back to rejoin the rest of the herd.

Felix Dahlke is another who advocates git for open source projects.  As he puts it, “Clone a repository, work with it, create your own branches, collaborate on something with someone else, and contribute back to the project.”  He goes on to talk about how fast git is (strange, I haven’t noticed github to be all that fast), to talk about how powerful it his (none of his examples resonated for me), and to extol github.

I think we are starting to get a bead on git:  git’s strengths matter on an open source project with lots of disparate developers but maybe not so much on other kinds of projects.  So then why are we using it on these other projects?

Because of that whole Emperor-has-no-clothes thing: smart geeks are telling us we need to use it.  It’s cool to use it.  Git is fashionable among the intelligentsia.

I have to give serious thought on whether to stick with git as each new developer on the team goes through the I-hate-git time wasting cycle.  They don’t seem to get much better than I-tolerate-git and we don’t seem to see much productivity benefit.  We need a source control system, but there are plenty of them out there.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s