I'm currently in the progress of comparing grubba's git conversion of the Pike repository to my svn conversion, which should improve the quality of both.
I've encountered a systematic difference where some kind of policy decision on what is "right" is needed though.
The issue is with tags. In CVS, each file is tagged separately. If a file does not have a particular tag, you will not get that file when you check out the tag. There are in fact quite a few files in Pike which do not have certain tags even though they were current on trunk when the tag was made. This is typically the case with modules which were initially developed outside the main tree (and imported using the CVS "module" concept, which is not understood by cvs rtag). Examples include:
lib/modules/SSL.pmod/ src/post_modules/COM/ src/post_modules/SDL/ src/post_modules/Shuffler/ src/post_modules/_Image_SVG/ lib/modules/Audio.pmod lib/modules/Tools.pmod/Legal.pmod
Then, there is also a few tags (so far I have encountered v7_1_7, v7_1_20, and v7_7_28) where large parts of the tree (including src/ in its entirery) do not have the tag, suggesting that the tagging operation was interrupted, and the resulting broken tag was just left there instead of being (re)moved.
So, there are two principle approaches here: Should the tags in the converted repository accurately reflect the tags in the CVS repository, so that you only get those files you would have gotten out of CVS, or do we take the revisionist approach of including also such files which do not have the tag but which were present on head when the tag was created, and therefore "ought" to have been tagged?