Announcing cvs-fast-export
<p>For those of you who have been following my work on tools to muck out the swamp that is CVS, a new shovel: <a href="http://www.catb.org/esr/cvs-fast-export/">cvs-fast-export</a>.  Note, this is an alpha release for testing purposes; double-check the quality of any conversions you do with it carefully.</p>
<p><span id="more-4761"></span></p>
<p>Actually, in some ways this is an old and trusty shovel. Keith Packard wrote the analysis code in 2006 to lift the X repos to git.  After that the code gathered dust; when I found it it was in a broken state due to changes in the git library API.  Some of you may have seen that version as &#8220;parsecvs&#8221;.</p>
<p>I sawed off the direct interface to git and replaced it with a back end that emits a git fast-import stream.  This is much more useful; it means other version-control systems that have importers for this format can use the tool.  It also means reposurgeon can use it.</p>
<p>If you&#8217;ve been paying attention, you&#8217;ll notice that this is the <em>second</em> CVS exporter I&#8217;ve shipped recently.  And you&#8217;re probably wondering why I&#8217;m maintaining two of these beasts. The answer is that they both fell into my lap at nearly the same time and I&#8217;m not yet sure either dominates the other.</p>
<p>One of the larger items on my near-term to-do list is to write a really good test suite for both of these, then use it to compare them with each other and cvs2git.</p>
<p>Just from reading the code of both I suspect that cvs-fast-export will do a better job than cvsps &#8211; Keith&#8217;s analyzer looks more powerful, less ad-hoc. But cvsps has one major feature lacking in cvs-fast-export; it can be used to lift repositories to which you have only remote access.</p>
<p>Depending on what the test-suite comparisons tell me, I may have to fix that by transplanting cvsps&#8217;s client code into cvs-fast-export (after which I would scrap cvsps). We&#8217;ll see.  There&#8217;s a fair bit of work still to be done before I&#8217;ll know enough to make that decision.</p>
<p>In the meantime, those of you interested in this problem can test.  And here&#8217;s a shiny thing I dangle before you: with the flip of a switch, cvs-fast-export can generate a graphical visualization of the commit DAG. </p>
