From: Eric S. Raymond Date: Sun, 15 Jul 2007 13:36:55 GMT Subject: Re: CVS -> SVN -> Git Message-ID: <20070715133655.GA9302@thyrsus.com> In-Reply-To: <469A0D54.8010303@alum.mit.edu> Michael Haggerty : > 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. -- Eric S. Raymond