зеркало из https://github.com/microsoft/git.git
Git::cat_blob: allow using an empty blob to fix git-svn breakage
Recent "git-svn optimization" series introduced Git::cat_blob() subroutine whose interface was broken in that it returned the size of the blob but signalled an error by returning 0. You can never use an empty blob with such an interface. This fixes the interface to return a negative value to signal an error. Reported by Björn Steinbrink. Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
b2a42f55bc
Коммит
d683a0e00c
|
@ -3191,7 +3191,7 @@ sub apply_textdelta {
|
||||||
if ($fb->{blob}) {
|
if ($fb->{blob}) {
|
||||||
print $base 'link ' if ($fb->{mode_a} == 120000);
|
print $base 'link ' if ($fb->{mode_a} == 120000);
|
||||||
my $size = $::_repository->cat_blob($fb->{blob}, $base);
|
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) {
|
if (defined $exp) {
|
||||||
seek $base, 0, 0 or croak $!;
|
seek $base, 0, 0 or croak $!;
|
||||||
|
@ -3570,7 +3570,7 @@ sub chg_file {
|
||||||
$self->change_file_prop($fbat,'svn:special',undef);
|
$self->change_file_prop($fbat,'svn:special',undef);
|
||||||
}
|
}
|
||||||
my $size = $::_repository->cat_blob($m->{sha1_b}, $fh);
|
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 $!;
|
$fh->flush == 0 or croak $!;
|
||||||
seek $fh, 0, 0 or croak $!;
|
seek $fh, 0, 0 or croak $!;
|
||||||
|
|
||||||
|
|
|
@ -811,12 +811,12 @@ sub cat_blob {
|
||||||
my $description = <$in>;
|
my $description = <$in>;
|
||||||
if ($description =~ / missing$/) {
|
if ($description =~ / missing$/) {
|
||||||
carp "$sha1 doesn't exist in the repository";
|
carp "$sha1 doesn't exist in the repository";
|
||||||
return 0;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($description !~ /^[0-9a-fA-F]{40} \S+ (\d+)$/) {
|
if ($description !~ /^[0-9a-fA-F]{40} \S+ (\d+)$/) {
|
||||||
carp "Unexpected result returned from git cat-file";
|
carp "Unexpected result returned from git cat-file";
|
||||||
return 0;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
my $size = $1;
|
my $size = $1;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче