windows下Git无法下载大文件的情况

在windows环境下git默认不支撑大于100m的文件,报错out of memory during "large" request for 268439552 bytes, total sbrk() is 141027328 bytes ...

可以修改perl源文件 /安装目录/Git/lib/perl5/site_perl/git.pm来解决,

perl/Git.pm | 15 +++++++-------- 1 files changed, 7 insertions(+), 8 deletions(-) diff --git a/perl/Git.pm b/perl/Git.pm index a86ab70..0b53566 100644 --- a/perl/Git.pm +++ b/perl/Git.pm @@ -896,22 +896,26 @@ sub cat_blob { } my $size = $1; - - my $blob; my $bytesRead = 0; while (1) { + my $blob; my $bytesLeft = $size - $bytesRead; last unless $bytesLeft; my $bytesToRead = $bytesLeft < 1024 ? $bytesLeft : 1024; - my $read = read($in, $blob, $bytesToRead, $bytesRead); + my $read = read($in, $blob, $bytesToRead); unless (defined($read)) { $self->_close_cat_blob(); throw Error::Simple("in pipe went bad"); } $bytesRead += $read; + + unless (print $fh $blob) { + $self->_close_cat_blob(); + throw Error::Simple("couldn't write to passed in filehandle"); + } } # Skip past the trailing newline. @@ -926,11 +930,6 @@ sub cat_blob { throw Error::Simple("didn't find newline after blob"); } - unless (print $fh $blob) { - $self->_close_cat_blob(); - throw Error::Simple("couldn't write to passed in filehandle"); - } - return $size; } --

你可能感兴趣的:(windows下Git无法下载大文件的情况)