Subject: Re: git cvsimport branches not consistent with CVS branches

From: [email-masked] (Brian Downing)
Date: Sun, 8 Jul 2007 16:02:18 -0500

On Sun, Jul 08, 2007 at 12:47:16PM +0100, Johannes Schindelin wrote:
> The only problem is that it is a misnomer: it is not fromcvs, but
> fromrcs, since you have to have access at the _files_. This is not
> always possible.

For the problem space I'm interested in (a /fast/ incremental CVS
importer) I think access to the RCS files is a must.  You can use inode
signatures to know which files you have to look at at all since the last
run, and you can abort your parse at the end of the delta section if no
new revisions appeared (rather than continuing to parse the deltatext
section, the largest part of the file).

For the repository I'm interested in (work), running a "real" cvs update
takes two or three minutes on a LAN.  Running a full rlog takes about
10 or so.  With the tricks above, I can import a single file change in
seconds instead.  (That includes the time to rsync the CVS repository
to my local mirror.)

Granted, though, not everyone can get access to the RCS files.

(The name's not really a misnomer though.  There's tons of CVS-specific
crap you have to deal with in the RCS file to successfully import it --
magic branch revision symbols, horrible vendor branch behavior, etc.)

I will try fromcvs; I hadn't looked at it, since from the documentation
it looked like it wasn't incremental.

-bcd