Re: CVS -> SVN -> Git
From: Eric S. Raymond <hidden>
Date: 2016-06-15 22:43:21
Michael Haggerty [off-list ref]:
For example, cvs2svn internally deduces which files should be added to a given branch in a given commit. But the information cannot be output to SVN in that form. Instead, cvs2svn has to figure out which *directories* to copy to the branch directory, then which files to remove from the copied directory (because they shouldn't have been tagged), and which other files to copy from other sources. This extra work, which is quite time- and space-consuming, is worse than pointless when converting to git, because git has to invert the process to figure out which individual files have to be tagged!
OK, that's a fair point. I might have known the showstopper would be somewhere near Subversion's tags-are-directories assumption. And this also neatly explains why I didn't see any problems or poor performance during my recent conversions; the projects I was lifting had no tags.
The interface between the two halves does not necessarily need to be a serialized data stream; it could just as well be via the Python API that is used internally by cvs2svn to access the reconstructed commits and supporting databases. This would require the second half to be written in Python, but otherwise would be very flexible and would avoid the need to find a be-all serialized format.
Or...wait for it...the generator for the serialized format could be one of the back ends! Probably a good idea to have for debugging reasons, if nothing else. -- <a href="http://www.catb.org/~esr/">Eric S. Raymond</a>