[By Nic Lindh on Saturday, 29 September 2007]
UPDATE Feb. 1, 2010: I got religion and started using Git after they worked out a lot of the complexity in the interface and I realized that you have to think of it as a file system in order for it to make sense. /UPDATE
In a post about moving as much data as possible into the cloud, I talked about using—and liking—Subversion. But, alas, the bloom is off that rose. Why? iWork ’08 is why.
iWork (and several other Apple applications) stores files in bundle format, which is essentially a folder the Finder knows to treat like a single item. Subversion, unfortunately, does its magic by putting a hidden folder inside each folder it’s tracking. The end result is that whenever you save a file in one of the iWork applications (Pages, Keynote, Numbers) the hidden folder gets blown away and Subversion gets really surly.
One could argue that Apple could be nicer about crushing extra things in bundles under its uncaring and despotic boot heel, and one could also argue that since Apple apparently has no intention whatsoever on changing its ways, Subversion should be re-engineered to handle having its hidden folders stepped on a bit more gracefully. Tomato, tomato.
Either way, it makes Subversion a royal pain to use with bundles.
Since the benefits of version control are just too great to give up, it was time to find a replacement. Apparently the cool thing among the hipsters these days is distributed version control, and who doesn’t want to be cool?
…Wickedly, awesomely cool. Yes, indeed. Feel the hip T-shirt with the ironic message forming itself around your torso as you consider distributed version control.
So distributed version control it is. There are a lot of different systems out there, and the nerd wars are raging about which one is the One True Way. Which, you know, is at least more interesting than the Text Editor Wars.
After a lot of googling it came down to a choice between Git or Mercurial.
Git possesses a lot of nerd cred as it’s written by none other than Linus Torvalds. The problem is that Linus is a kernel hacker, so Git is packed to the rafters with things only a kernel hacker could love. Go ahead, read the docs, I dare you. Then have a nice lie-down and put an ice pack on your forehead and you’ll feel better in no time.
Or, to put it in a less snarky way, Git has a lot of features that make sense when you’re managing a huge project with many contributors. When you’re just one mad prophet all alone in the wilderness, that complexity isn’t needed.
Mercurial, on the other hand, makes sense. Easy to install and very little drama.
It’s nice to not have to stress about backing up the one single point of failure that is the bane of centralized version control anymore.
So thanks, Apple and your bundles, I guess, for forcing me to learn something new… And for the hipster T-shirt. It’s awesome.