From: Martin Langhoff Date: Tue, 01 Nov 2005 01:22:37 GMT Subject: Re: git-cvsimport: $cvs->file() fails silently Message-ID: <46a038f90510311722y56eadd3bj1ae53db05c496c67@mail.gmail.com> In-Reply-To: <46a038f90510262123y4f56cf7v5494b391394ac648@mail.gmail.com> On 10/27/05, Martin Langhoff wrote: > There _must_ be one place that we're missing but I just can't > see it. Got some more info on this. The output of cvsimport when this happens looks like this: Read from remote host cvs.sourceforge.net: Connection reset by peer Read from remote host cvs.sourceforge.net: Connection reset by peer Update course/enrol.php: bytes Use of uninitialized value in split at /home/martin/local/git/git-cvsimport line 362. Update lang/en/moodle.php: 66792 bytes Tree ID ef11ad5a0cf917e98bc477837de1b3f587e12027 Parent ID e972b3a28e1c4802fc5af6a996164c93fb4f3e53 Committed patch 20143 (MOODLE_15_STABLE 2005-10-31 20:31:57) Commit ID 95a748b0d9cd6dc74e65497561514fa5858c149c Around line 335 $res = $self->_line($fh); is returning '', which is defined but otherwise empty. I've patched cvsimport thus to try and catch this kind of error: diff --git a/git-cvsimport.perl b/git-cvsimport.perl index bbb83fb..f594df3 100755 --- a/git-cvsimport.perl +++ b/git-cvsimport.perl @@ -337,6 +337,10 @@ sub file { } close ($fh); + if ($res eq '') { + die "Looks like the server has gone away during the transaction!"; + } + return ($name, $res); } @@ -764,6 +768,9 @@ while() { my $rev = $3; $fn =~ s#^/+##; my ($tmpname, $size) = $cvs->file($fn,$rev); + if ($size eq '') { + die "Should not happen! Something went wrong with the remote connection"; + } if($size == -1) { push(@old,$fn); print "Drop $fn\n" if $opt_v; Now, I'm sure we can catch it in the "right" place, but I'm not sure where that is. cheers, martin