Why Git is my default SCMS right now

The question isn't whether to move from CVS or SVN to a distributed SCMS. That's almost always a no-brainer. Do it as fast possible, then watch your project receive more frequent contributions from outside your core team, and watch contributions be much easier to integrate…

The real question is which distributed SCMS to use. I'm a happy user of Git and DaRCS, have never been to successful with arch, tla, or bazaar/bzr, have given up on Monotone in spite of it being a pioneer of some really good ideas, have heard both good and bad things about Mercurial but haven't had a chance to try it yet, and don't know enough about SVK to have a particularly intelligent opinion. My current default is DaRCS for Haskell code. For everything else, it's Git.

Git has some major weaknesses. It's unbelievably arcane. Its default command-line interface is a total mess, and I am aware of no GUI for anything except repository browsing. Git doesn't run well on Windows, which is a major pain. There are probably more folks using SVN so they can use TortoiseSVN than for any other reason.

However, Git is blazingly fast, quite efficient of storage, its repository format captures a lot of information, and it works smoothly in a variety of different settings and workflows.

Equally importantly, the major projects I work with are the X Window System, the Linux kernel, and a bit of the Haskell work. Of these, the first two use Git. Thus, as I learn to work with Git, I am able to help out in these communities, and folks there are able to help me.

I agree with those who say that the proliferation of distributed SCMS's is killing us. I think Git is good enough to become an agreed standard, and would love to see folks help out in patching its remaining weaknesses. Therefore, for the time being, Git is my default SCMS. (B)