Compared to most CVS conversions this one was almost ridiculously easy; cvs-fast-export and reposurgeon made short work of it. (I improved both slightly in the process, which is normal; every repo, even the easy ones, is a different challenge.)
The git conversion is nearly linear, with one root, only one multi-child commit, and no merges. The one fork commit, :1808 "groff pre-1.16 with new directory structure", has a child :18138 "new html fonts" which consists of a flood of deletes and one modification of font/devhtml/Makefile.sub; this commit is in turn childless. This is obvious junk to be deleted. You were either very lucky or very careful; most CVS repos of any age have a lot more cruft in them than this. File commits before Wed Apr 11 22:45:11 2007 lack commitids to bind them into changesets. Coalescence of file vommits older than this may not be perfect. No commit comments refer to RCS revision numbers, so no reference-lifting was required. All committers have been identified and have git-style IDs with full name and email address. I have a usable conversion now; the dump is just shy of a gigabyte long. What happened to the history before 2000? Was the code really not under version control until that late? The only step not done is massaging multiline commit comments so they obey git conventions. Normally I do this, but given the particular conventions GNU projects use it's not clear I should. Here's the problem. In the git world, the first line of each comment should be a short standalone summary of the committer's intention. But there's no obvious way to extract such a summary line from an existing change comment like this... * html.cc (html_printer::make_new_image_name): Tidied up file and fixed name of image if the source file is in a different directory. * html.cc (create_file): Renamed to create_tmp_file. * html.cc (create_file): Identified & fixed security bug when creating files in /tmp. * Makefile.sub: Adapted to new directory structure. I'll look at this some more to see what percentage of cases I cab salvage, but I think we have to accept that the view of older sections of the history in gitk isn't going to be very pretty. -- <a href="http://www.catb.org/~esr/">Eric S. Raymond</a> False is the idea of utility that sacrifices a thousand real advantages for one imaginary or trifling inconvenience; that would take fire from men because it burns, and water because one may drown in it; that has no remedy for evils except destruction. The laws that forbid the carrying of arms are laws of such a nature. They disarm only those who are neither inclined nor determined to commit crimes. -- Cesare Beccaria, as quoted by Thomas Jefferson's Commonplace book