Subject: Re: I have end-of-lifed cvsps

From: "Eric S. Raymond" <[email-masked]>
Date: Tue, 17 Dec 2013 09:07:46 -0500

Jakub Narębski <[email-masked]>:
> I wonder if we can add support for incremental import once, for all
> VCS supporting fast-export, in one place, namely at the remote-helper.

Something in the pipeline - either the helper or the exporter - needs to
have an equivalent of vc-fast-export's and cvsps's -i option, which
omits all commits before a specified time and generates cookies like
"from refs/heads/master^0" before each branch root in the incremental
dump.

This could be done in the wrapper, but only if the wrapper itself
includes an import-stream parser, interprets the output from the
exporter program, and re-emits it.  Having done similar things
myself in reposurgeon, I advise against this strategy; it would
introduce a level of complexity to the wrapper that doesn't belong
there, and make the exporter+wrapper comnination harder to verify.

Fortunately, incremental dump is trivial to implement in the output
stage of an exporter if you have access to the exporter source code.
I've done it in two different exporters.  cvs-fast-export now has a
regression test for this case

> I don't know details, so I don't know if it is possible; certainly
> unstable fast-export output would be a problem, unless some tricks
> are used (like remembering mappings between versions).

About such tricks I can only say "That way lies madness".  The present
Perl wrapper is buggy because it's over-complex.  The replacement wrapper
should do *less*, not more.

Stable output and incremental dump are reasonable things to demand of
your supported exporters.  cvs-fast-export has incremental dump
unconditionally, and stability relative to every CVS implementation
since 2004.
-- 
		<a href="http://www.catb.org/~esr/">Eric S. Raymond</a>