Well, I have an actual list of advantages that git may offer: - better patch/diff handling capabilities. CVS is very crappy at that. As soon as you are testing stuff locally, every update request will produce conflicts. git has very good merging capabilities, comparatively.
- possibility to have commits that make sense, and are not just one file at a time. - cheap tags. Makes it trivial to tag a release, or hey, even to tag the tree a release is made off. Sometimes, I would actually enjoy knowing what diffs a binary snapshot contains. - being able to prepare logical commits. git is much better than cvs at handling patch sets. - bisecting for bugs. - moving files sucks with cvs. - being able to prepare diffs with new directories. CVS currently really sucks at that. You more or less need to have a local repository copy (which is possible thru various tools), because otherwise, adding a directory will commit to the distant repository. As far as cvs is concerned, by far, the most annoying nit I have is with bad merges.... if I had a nickel for every hour I spent cleaning up merge disasters in a tree... I would be rich. I've looked at GNU cvs code and it's not pretty (it does very weird things on import branches). Pity OpenCVS is not really going anywhere (don't look at me to advance it, I have already too many projects going on, and I don't fancy writing diff/sdiff primitives in C).

