I’ve been sold on the concept of distributed revision control systems ever since Simon Michael showed me Darcs a year ago. But I’ve been slow to adopt it for any real use. Part of the reason for this was that I wasn’t super-happy with the implementations available, although there are quite a few. Darcs certainly seemed like the best of the bunch, but it never felt quite right to me. Besides being sluggish, it relies on tons of interactive prompting - which is not the sort of UX I look for in a command-line tool.
Then I discovered Git. Younger than most of the other choices, Git seems to have that extra bit of pop that Darcs et al are missing. It doesn’t hurt that it’s author is an opinioned Scandanvian uber-hacker who we all love. (No, not that one.)
I’m especially pleased to see that there seem to be some recent rumblings that Git may be gaining traction in the Rails community. I thought I’d be a minority voice on this, but it seems like everyone else is seeing the light too - and with remarkable synchronization. An idea whose time has come, perhaps.
Tom Moertel has an intriguing description of porting his workflows from Darc to Git. Although ostensibly about how Git is a preferred tool, along the way it shows off some of the crazy-awesome features of Darcs.
But that’s because decentralized SCMs spank the pants off of centralized ones. So why isn’t everyone using them already? Because there’s a cost: the higher level of brainpower required. To use it at all, certainly, but also to take advantage of the really powerful features of the decentralized model. But since SCM is a major part of a developer’s toolchain, the time investment in learning a harder but more powerful tool makes sense. Going from Subversion to Git is like going from pico to vi, or from tcsh to bash, or from flat files to SQL. Getting your head around it may hurt a bit, but the effort will pay off very nicely in the long run.