Re: [BISECTED] git-svn: "Failed to read object ..." during clone

Subsystems: the rest

3 messages, 3 authors, 2016-06-15 · open the first message on its own page

Re: [BISECTED] git-svn: "Failed to read object ..." during clone

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:44:39

Björn Steinbrink [off-list ref] writes:
Hi Adam,

when cloning the SVN repository at svn://svn.debian.org/estron/ git-svn bails
out with:
Failed to read object e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 at
/usr/local/bin/git-svn line 3195, <GEN36> line 645.
Heh, I should have been more careful.  The series introduces Git::cat_blob
that returns the size of a blob but the interface is broken and signals
error by returning zero.  e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 is a
zero sized blob.

Would this be enough?

---

 git-svn.perl |    4 ++--
 perl/Git.pm  |    4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/git-svn.perl b/git-svn.perl
index 37976f2..3a6eb1c 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -3191,7 +3191,7 @@ sub apply_textdelta {
 	if ($fb->{blob}) {
 		print $base 'link ' if ($fb->{mode_a} == 120000);
 		my $size = $::_repository->cat_blob($fb->{blob}, $base);
-		die "Failed to read object $fb->{blob}" unless $size;
+		die "Failed to read object $fb->{blob}" if ($size < 0);
 
 		if (defined $exp) {
 			seek $base, 0, 0 or croak $!;
@@ -3570,7 +3570,7 @@ sub chg_file {
 		$self->change_file_prop($fbat,'svn:special',undef);
 	}
 	my $size = $::_repository->cat_blob($m->{sha1_b}, $fh);
-	croak "Failed to read object $m->{sha1_b}" unless $size;
+	croak "Failed to read object $m->{sha1_b}" if ($size < 0);
 	$fh->flush == 0 or croak $!;
 	seek $fh, 0, 0 or croak $!;
 
diff --git a/perl/Git.pm b/perl/Git.pm
index 6ba8ee5..d05b633 100644
--- a/perl/Git.pm
+++ b/perl/Git.pm
@@ -811,12 +811,12 @@ sub cat_blob {
 	my $description = <$in>;
 	if ($description =~ / missing$/) {
 		carp "$sha1 doesn't exist in the repository";
-		return 0;
+		return -1;
 	}
 
 	if ($description !~ /^[0-9a-fA-F]{40} \S+ (\d+)$/) {
 		carp "Unexpected result returned from git cat-file";
-		return 0;
+		return -1;
 	}
 
 	my $size = $1;

Re: [BISECTED] git-svn: "Failed to read object ..." during clone

From: Sam Vilain <hidden>
Date: 2016-06-15 22:44:39

Junio C Hamano wrote:
Heh, I should have been more careful.  The series introduces Git::cat_blob
that returns the size of a blob but the interface is broken and signals
error by returning zero.  e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 is a
zero sized blob.

Would this be enough?
 		my $size = $::_repository->cat_blob($fb->{blob}, $base);
-		die "Failed to read object $fb->{blob}" unless $size;
+		die "Failed to read object $fb->{blob}" if ($size < 0);
Heh.  This sort of thing is why perl has "undef"; you could make that
"unless defined $size" and "return undef" in the functions.

Sam

Re: [BISECTED] git-svn: "Failed to read object ..." during clone

From: Björn Steinbrink <hidden>
Date: 2016-06-15 22:44:39

On 2008.05.27 23:32:59 -0700, Junio C Hamano wrote:
Björn Steinbrink [off-list ref] writes:
quoted
Hi Adam,

when cloning the SVN repository at svn://svn.debian.org/estron/ git-svn bails
out with:
Failed to read object e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 at
/usr/local/bin/git-svn line 3195, <GEN36> line 645.
Heh, I should have been more careful.  The series introduces Git::cat_blob
that returns the size of a blob but the interface is broken and signals
error by returning zero.  e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 is a
zero sized blob.

Would this be enough?
At least the failing clone command now works and the history for the
previously empty .cvsignore file (which I guess was the one that caused
the failure) looks good. Didn't check anything else on that clone,
because I had just randomly chosen that repository to test something
completely different and then noticed the clone failure.

Thanks,
Björn
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help