{"id":5190,"date":"2013-12-28T13:33:35","date_gmt":"2013-12-28T18:33:35","guid":{"rendered":"http:\/\/esr.ibiblio.org\/?p=5190"},"modified":"2014-03-05T05:40:27","modified_gmt":"2014-03-05T10:40:27","slug":"announcing-cvs-fast-export-1-0","status":"publish","type":"post","link":"http:\/\/esr.ibiblio.org\/?p=5190","title":{"rendered":"Announcing cvs-fast-export 1.0"},"content":{"rendered":"<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>\n<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>\n<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>\n<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>\n<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>\n<p>cvs-fast-export is better documented, especially around error conditions.<\/p>\n<p>Help stamp out CVS in our lifetime!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Not long ago I pulled the plug 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. And lo, it has come to pass.&hellip; <a class=\"more-link\" href=\"http:\/\/esr.ibiblio.org\/?p=5190\">Continue reading <span class=\"screen-reader-text\">Announcing cvs-fast-export 1.0<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,13],"tags":[],"class_list":["post-5190","post","type-post","status-publish","format-standard","hentry","category-new-on-my-website","category-software","entry"],"_links":{"self":[{"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=\/wp\/v2\/posts\/5190","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5190"}],"version-history":[{"count":2,"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=\/wp\/v2\/posts\/5190\/revisions"}],"predecessor-version":[{"id":5192,"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=\/wp\/v2\/posts\/5190\/revisions\/5192"}],"wp:attachment":[{"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5190"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5190"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5190"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}