Subject: Re: cvsimport infinite loop

From: Michael Haggerty <[email-masked]>
Date: Sun, 10 Feb 2008 17:38:01 +0100

Peter Eisentraut wrote:
> I'm trying to convert the PostgreSQL CVS to Git, using Git 1.5.4 (but
> the problem also occurs with earlier versions).  To reproduce:
> 
> $ rsync -avzCH --delete anoncvs.postgresql.org::pgsql-cvs cvsroot/
> $ git-cvsimport -v -d $PWD/cvsroot pgsql
> 
> This runs for a while and then messages like this are repeating:
> 
> WARNING: Invalid PatchSet 2062, Tag REL7_1_BETA2:
>     src/include/c.h:1.17=after, src/include/executor/nodeNestloop.h:1.2=before. Treated as 'before'
> WARNING: Invalid PatchSet 2062, Tag REL7_1_BETA2:
>     src/include/c.h:1.17=after, src/include/executor/nodeResult.h:1.2=before. Treated as 'before'
> WARNING: Invalid PatchSet 2062, Tag REL7_1_BETA2:
>     src/include/c.h:1.17=after, src/include/executor/nodeSeqscan.h:1.3=before. Treated as 'before'
> 
> [...]
> 
> I've let this run all night and it doesn't stop.
> 
> I don't want to exclude the possibility that the CVS repository has had some
> funny business done to it over the years, but surely an infinite loop
> shouldn't happen in any case.  Please advise.

*Every* CVS repository contains some measure of funkiness :-).  I don't
know what caused this particular problem with cvsps, but judging from my
experience developing cvs2svn, a likely culprit would be a cycle in the
graph of dependencies between changesets that were inferred too naively.
 I had to teach cvs2svn graph theory to make it robustly handle
situations like this.

I just tried converting the pgsql repository using the trunk version of
cvs2svn (which also supports output to git [2]).  It worked fine.  If
you can work with a one-time conversion (as opposed to incremental) then
consider using cvs2svn.

Michael

[1] http://cvs2svn.tigris.org
[2] http://cvs2svn.tigris.org/cvs2git.html