Julian Phillips wrote: > Has anyone managed to succssfully import a Subversion repository that > was initially imported from CVS using cvs2svn using fast-import? > > It looks like cvs2svn has created a rather big mess. It has created > single commits that change files in more than one branch and/or tag. It > also creates tags using more than one commit. Now I come to try and > import the Subversion history into git and I'm having trouble creating a > sensible stream to feed into fast-import. I'm the main cvs2svn developer. Obviously, the tool is intended to convert to Subversion, but there are ways to tune it to make its output a little bit more git-friendly. [Please note that both CVS and SVN allow changes to multiple tags/branches in a single commit and creating tags using more than one commit. That is why cvs2svn converts these repository "features" 1:1 by default.] Release 2.0.0-rc1 of cvs2svn (released today) has a --no-cross-branch-commits option that prevents commits that affect more than one branch. For multiproject conversions, the "ctx.cross_project_commits" option might also be useful. (The latter is only available if you start cvs2svn with an --options file.) The new cvs2svn release is also more intelligent about determining the most likely source branch from which a tag/branch was created. This does not eliminate the creation of tags from more than one revision, but it should reduce its frequency. If your repository uses any vendor branches, you might also consider --exclude'ing them. In the new cvs2svn version, this causes vendor revisions to be grafted onto trunk and thereby eliminates another common cause of multiple-source branches/tags. Incidentally, now that cvs2svn 2.0.0 is nearly out, I am thinking about what it would take to write some other back ends for cvs2svn--turning it, essentially, into cvs2xxx. Most of the work that cvs2svn does is inferring the most plausible history of the repository from CVS's sketchy, incomplete, idiomatic, and often corrupt data. This work should also be useful for a cvs2git or cvs2hg or cvs2baz or ... I haven't played with a distributed SCM yet, but if somebody would be interested in working with me on this please let me know. Michael - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html