DVCS selection woes
I’ve been a convert to distributed version control, and in particular a user of Mercurial, for a few years now. I love Mercurial — its user interface is simple, the core concepts make sense, and it generally does an intelligent job of managing my programs (or config files, or homework assignments, or whatever).
I’ve tried to learn Git a few times, and even started converting to it some time last year, but go back to Mercurial for its user-facing simplicity. Internally, Git is simpler, but mapping use cases on to that simplicity is entirely exposed to the user. Mercurial’s UI is much more task-driven, such that there’s really one obvious way to do most useful things. I usually am able to keep my Mercurial repositories in somewhat sane states; Git’s failure mode seems to be leaving your branch refs in an incomprehensible state.