Announcing cvs-fast-export 1.0
<p>Not long ago I <a href="http://esr.ibiblio.org/?p=5167">pulled the plug</a> on one of the two CVS export utilities I was maintaining. One consequence of this is that I decided I needed to get the other one out of beta and into a state I would be willing to ship as 1.0.</p>
<p>And lo, it has come to pass. I just shipped <a href="http://www.catb.org/esr/cvs-fast-export/">cvs-fast-export 1.0</a>.  It has been well field-tested; a couple of weeks ago I used it to rescue the history of Gnu Troff.</p>
<p>There are several CVS exporters out there that suck pretty badly.  (To be fair, the perversity of CVS is such that doing an even half-decent job of lifting CVS histories into a modern version-control system is quite difficult.) Now that this one is shipped I know of exactly two that don&#8217;t suck. The other one is Michael Haggerty&#8217;s cvs2git, which I&#8217;m working with him on improving.</p>
<p>Tradeoffs: cvs2git is slow and a bit clunky to use (I&#8217;m improving the latter but can&#8217;t fix the former). cvs-fast-export is blazingly fast (like, 3.7K commits a minute) but has a hard repository-size limit &#8211; above it you run out of core and the OS reaps the process in mid-flight. (Very few projects will hit this limit.)</p>
<p>For each tool there are weird CVS edge cases that it gets wrong.  The sets of edge cases are different.  cvs2git&#8217;s may be smaller, but I&#8217;m not sure of that; we haven&#8217;t set up head-to-head testing yet.  Most projects will not trip over either set of problems.</p>
<p>cvs-fast-export is better documented, especially around error conditions.</p>
<p>Help stamp out CVS in our lifetime!</p>
