Couple of additional notes --
From my POV as part/instigator of the group of developers using GIT, I think there is no hurry to move the main dev tree to GIT. We could make it a temporary practice that new _feature_ code should be drafted as a nice patch-series in GIT, reviewed there, and then landed in CVS, like I did with my accesslib rework.
IMHO, this model leads to higher-quality code - the reviewer can push-back a bit, and force the author of the feature to do cleanups _before_ it gets into CVS HEAD. And if the branch turns out to be a dead end... well, it's as if it had never happened
As a developer, I find that liberating.
And from a 'moodle maintainer' POV, our current CVS HEAD has some dead ends lying there, "disabled". That is dead code that even makes it to releases. So... thankfully moodle is well modularised - users don't get to see it at all. But it would be better to ship clean code - one of these bits of dead code could have security issues
With the approach above, the core team gets 99% of the migration benefits, with 1% of the risk. Dealing with git-cvsexportcommit and the occassional minor drift is a pain, but I think it might be worthwhile.
Another point is that once we do move wholesale to git, we can look into small variations of the "purely centralised, HEAD and _STABLE" approach we have now. For starters, things like the _REVIEWED branch stuff are much easier and cleaner to maintain. And over time, we might find that it makes sense to run more feature branches, and our HEAD branch be an "integration" place.
Back to my real work - I'm... a few months late with the release