git/list[1] front-page[2] threads[3] people[4] search[5] about
 

State of CVS-to-git conversion tools (Was: Re: cvsps: bad usage: invalid argument --norc)

From
Eric S. Raymond <esr@thyrsus.com>
Date
Apr 14, 2013, 11:33 UTC
Message-ID
<20130414113351.GA1299@thyrsus.com>
In-Reply-To
<673219382.20130414124800@gmail.com>
Ilya Basin <basinilya@gmail.com>:
Show 7 quoted lines
> IB> Hi esr.
> IB> In cvsps 3.10 the flag --norc was removed. It broke 'git cvsimport'.
> IB> Please give the option back and write something in the man page like:
> IB>     This option has no effect; it is present for compatibility
> 
> Looks like the tool is completely different. I think I'll have to
> downgrade.

Or you could just use 3.x directly rather than through the git-cvsimport wrapper. It works better that way - it actually ships a fast-import stream that git fast-import can consume directly.

Old cvsps (2.x) was very, very broken; there was a bug in it that pretty much guaranteed incorrect conversion of branchy repos. I've fixed that particular bug, and several other serious ones, along with adding the import-stream output stage, but I don't really trust the cvsps code; I think its algorithmic core is weak and klugey and only works semi-by-accident.

I do *not* recommend downgrading, it will pitch you from a bad situation into a worse one. Yes, Junio is still shipping a wrapper for 2.x, but that was very much against my advice.

I'm also now the maintainer of cvs-fast-export, which used to be Keith Packard's utility for lifting the X.org CVS repo to git. That was before I resurrected it and added a fast-import stream output stage.

I *think* cvs-fast-export's algorithms are more correct than cvsps's, but I have not yet been able to pry loose the time to write the really rigorous test suite to verify this. That goal has been second on my prority list for a couple of months now; I keep wanting to get to it but having to fight fires on other projects instead.

I wish I could point you at a convertor I really trust. I can't. There is a third tool, cvs2git (based on the analyzer from cvs2svn) that I don't maintain, which has problems of its own. And those three are about it.

Yes, it's a swamp. The relatively poor capability of the tools isn't anybody's fault; the problem domain is *nasty*. I've been working a closely related but easier one (Subversion stream dump analysis) for a couple years now and understanding it doesn't make it less ugly.

I think with 4-6 weeks of concentrated attention I could clean up the mess and deliver a really high-quality converter, and I'm motivated to do this because I want it as a CVS front end for reposurgeon. But it hasn't happened yet and the incompleteness of my test suite is a blocker in the way.

The topo analysis code in all these tools is really fragile and tends to break on old edge cases when you try to teach it to handle new ones, so a good set of regression tests is especially important. And doesn't yet exist, though I have built a decent start for cvsps based on the tests in the git tree.

Do you have enough interest and spare cycles to help finish the test suite? Another pair of hands on it might speed things up a lot.

-- 
		<a href="http://www.catb.org/~esr/">Eric S. Raymond</a>
Previous: John KeepingNext: Michael Haggerty
Message 4 of 16 in “cvsps: bad usage: invalid argument --norc”
  1. Ilya BasinApr 14, 2013
  2. Ilya BasinApr 14, 2013
  3. John KeepingApr 14, 2013
  4. State of CVS-to-git conversion tools (Was: Re: cvsps: bad usage: invalid argument --norc)Eric S. Raymond, Apr 14, 2013
  5. Michael HaggertyApr 15, 2013
  6. Ilya BasinApr 15, 2013
  7. Jakub NarębskiApr 15, 2013
  8. Eric S. RaymondApr 18, 2013
  9. Does git fast-import support deltas?Ilya Basin, Apr 19, 2013
  10. Felipe ContrerasApr 19, 2013
  11. Jonathan NiederApr 19, 2013
  12. Re[2]: State of CVS-to-git conversion tools (Was: Re: cvsps: bad usage: invalid argument --norc)Ilya Basin, Apr 20, 2013
  13. Eric S. RaymondApr 23, 2013
  14. Re[2]: State of CVS-to-git conversion tools (Was: Re: cvsps: bad usage: invalid argument --norc)Ilya Basin, Apr 23, 2013
  15. Eric S. RaymondApr 23, 2013
  16. Re[2]: State of CVS-to-git conversion tools (Was: Re: cvsps: bad usage: invalid argument --norc)Ilya Basin, Apr 24, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.