I’ve been using DVCSs for more than four years and I love them. Both Git and Mercurial are excellent source control tools, each with their strong points and their warts. The biggest difference between the two is the learning curve. I was very comfortable with Mercurial after only a few weeks and the same has held true wherever I’ve introduced it.
It took me about six months to get to the same comfort level with Git. And that was with three years of Mercurial experience under my belt.
My current project is staffed with developers of varying competence and we’re using Git. Some people just “get it”, others don’t, and some just flat-out refuse to learn. I try not to blame the recalcitrant developers for their close-mindedness because I think it is a problem with Git.
Source control shouldn’t have to be as baffling as Git makes it. Mercurial kept it simple, proving my point.
To make matters worse, the developers that struggle with Git are the ones that repeatedly make mistakes like merging the development branch into the production support branch, or screwing up a 3-way merge, or being incapable of making small incremental commits and then losing their work.
These rookie mistakes give Git a bad name and have management are declaring a failure and requesting that we go back to CVS or SVN.
Git’s complexity inhibits its adoption and gives DVCSs a bad name. It’s a great development tool and I don’t want to go back to CVS or SVN, so please, Git Gods, make it simpler so that the middling developers don’t condemn us to the Dark Ages of source control.