{"id":3839,"date":"2011-10-23T09:57:52","date_gmt":"2011-10-23T13:57:52","guid":{"rendered":"http:\/\/esr.ibiblio.org\/?p=3839"},"modified":"2014-03-12T00:10:52","modified_gmt":"2014-03-12T04:10:52","slug":"looking-for-reposurgeon-test-cases","status":"publish","type":"post","link":"http:\/\/esr.ibiblio.org\/?p=3839","title":{"rendered":"Looking for reposurgeon test cases"},"content":{"rendered":"<p>I just released <a href=\"http:\/\/catb.org\/~esr\/reposurgeon\/\">reposurgeon 1.2<\/a> and am continuing to develop the tool.  In order to test some of the newer features, I&#8217;m looking for repository conversions to do.  If you run an open-source project that is still using CVS or Subversion, or some odd non-distributed VCS, I may be willing to lift it to git for you (and from git to any other DVCS you might prefer is a pretty small step).  Details of this offer follow; limited time only, first come, first served.<\/p>\n<p>(Why have me do it?  Well&#8230;especially for older projects with a complex revision history, it&#8217;s a messy and daunting job.  The tools are somewhat flaky, the difference between a sloppy conversion and a good one is significant, and good conversions require experience and judgment.)<\/p>\n<p><!--more--><\/p>\n<p>The ideal test for reposurgeon is a Subversion repository of a project that was formerly CVSed and contains a lot of junk commits and artifacts generated by cvs2svn conversion.  I&#8217;d also like to lift at least one project now in CVS so I can get a good feel for how cvs2svn behaves today (I know it has it has substantial improvements from older versions because I wrote at least one of those improvements myself).<\/p>\n<p>The conversion process will look like this:  <\/p>\n<p>1. If starting from CVS, I&#8217;ll make a preliminary conversion with git-cvsimport.  If starting with Subversion, I&#8217;ll do the preliminary  conversion with git-svn. If your repository is in something weird, I&#8217;ll need to either find a lifting tool, or possibly build one, or tell you it&#8217;s more work than I&#8217;m willing to do.<\/p>\n<p>2. This is the interesting part: clean up the mess.  Up-converted repos tend to be full of conversion artifacts. For example, many versions of cvs2svn mechanically generate commits to represent CVS release tags; a high-quality conversion should create actual tag objects corresponding to the junk commits and delete the junk.   Also, any commit references in the change comments need to be fixed up (generally I convert things like Subversion revision numbers to committer + date stamp).<\/p>\n<p>The result of a really good after-conversion cleanup looks as though the project had been using git from day one.  I&#8217;ve done several of these now, mostly on my own projects but recently for the Roundup bug tracker.  Each time I do one of these reposurgeon gets better &#8211; more features, bugs exposed and fixed.  That&#8217;s the point; reposurgeon is a good tool, and I want to case-harden it into a great one.<\/p>\n<p>There are some conditions on this offer.<\/p>\n<p>First and most importantly, I want the result to be <em>used<\/em>.  A conversion typically involves three to four days of hard work.  If your repo has a kind of cruft or malformation in it that I haven&#8217;t seen before, well, teaching reposurgeon to deal with that is the point of the exercise but it also means the conversion may take longer.  A precondition for me to put in that kind of work is that the political ducks have to be lined up first &#8211; the project has to have decided to move and be willing to use the results. (Yes, the project should exercise due diligence to verify that I haven&#8217;t screwed up; that&#8217;s a different issue.)<\/p>\n<p>I&#8217;m only willing to do a limited number of these, so if I get a flood of requests I&#8217;m going to be choosy.  Preference will go to projects that are older and\/or more important and\/or larger.  The ideal candidate would be an important piece of open-source infrastructure with a long, messy history rooted in CVS or RCS or SCCS.<\/p>\n<p>If you want it, conversion from git to another DVCS (hg, bzr, whatever) is your problem.  I&#8217;ll point you at tools, but the only part I&#8217;m interested in is already done when you have your git repo.<\/p>\n<p>Again, the sort of capability I&#8217;m looking to improve in reposurgeon is automated recognition and cleanup of conversion cruft.  I may experiment with features like branch merge detection if conditions seem right.<\/p>\n<p>UPDATE: When you make your request, please have the following things ready:<\/p>\n<p>1. A repository-access URL.<\/p>\n<p>2. An authors file mapping local user IDs to email addresses and user names (the git up-conversion needs this). <\/p>\n","protected":false},"excerpt":{"rendered":"<p>I just released reposurgeon 1.2 and am continuing to develop the tool. In order to test some of the newer features, I&#8217;m looking for repository conversions to do. If you run an open-source project that is still using CVS or Subversion, or some odd non-distributed VCS, I may be willing to lift it to git&hellip; <a class=\"more-link\" href=\"http:\/\/esr.ibiblio.org\/?p=3839\">Continue reading <span class=\"screen-reader-text\">Looking for reposurgeon test cases<\/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":[13],"tags":[33],"class_list":["post-3839","post","type-post","status-publish","format-standard","hentry","category-software","tag-reposurgeon","entry"],"_links":{"self":[{"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=\/wp\/v2\/posts\/3839","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=3839"}],"version-history":[{"count":5,"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=\/wp\/v2\/posts\/3839\/revisions"}],"predecessor-version":[{"id":5457,"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=\/wp\/v2\/posts\/3839\/revisions\/5457"}],"wp:attachment":[{"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3839"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3839"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3839"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}