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

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

From
Eric S. Raymond <esr@thyrsus.com>
Date
Apr 18, 2013, 09:43 UTC
Message-ID
<20130418094326.GB11038@thyrsus.com>
In-Reply-To
<1762779000.20130415215818@gmail.com>
Ilya Basin <basinilya@gmail.com>:
Show 6 quoted lines
> Hi Eric.
> 
> I tried --fast-export. It's 2 times faster.
> The first thing that differs: in cvsps2 commits with adjacent
> timestamps were joined into one (see the attached files). Do you know
> the reason?

The cvsps guy included code to do that. Keith Packard didn't. Sorry I can't be more helpful, but that's about all I know.

I didn't write either analysis stage; I understand cvsps's, somewhat, because I had to fix several nasty bugs in it. I *don't* understand cvs-fast-export's analysis stage very well yet, because it has no obvious bugs that have required me to dive in. (Keith's notes document one major bug, which may be inherent to the mismatch between file- and changest-orientation and not fixable in the general case, though I will try.)

> Does this --fast-export thing support what John mentioned, the
> "incremental import support"? Does 'git fast-import' has it?

cvs-fast-export does not have incremental-import support. Whether git-cvs-import has it depend on which version you have and what backend it it is using. I don't maintain that wrapper.

> I need it, because full import takes too long.
> The central repo of my employer is CVS, other people commit to it and
> I use git internally to be able to tidy my commit history before
> exporting to CVS.

You are out of luck. That feature was dependent on a very fragile coupling between the old output format and a bunch of unmaintainably horrible Perl in the git-cvs-import wrapper script. It didn't work very well; frankly, I'm amazed it worked at all.

The things I had to do to fix the serious bugs in cvsps2 and make it output a fast-import stream had the side effect of breaking that coupling. cvsps3 won't give you that feature. Dropping back to cvsps2 to keep that feature will expose you to the cvsps2 bugs.

I'm sorry these tools are such a mess. I'm trying to fix that, but it's hard, slow work. The problems are deeply ugly and the edge cases have poisoned spikes.

-- 
		<a href="http://www.catb.org/~esr/">Eric S. Raymond</a>
Previous: Jakub NarębskiNext: Ilya Basin
Message 8 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.