mirror of
https://github.com/git/git.git
synced 2026-01-17 14:21:57 +00:00
Allow add -p and add -i with a large number of files
This fixes https://github.com/msysgit/git/issues/182. Inspired by Pull Request 218 using code from @PhilipDavis. [jes: simplified code quite a bit] Signed-off-by: Kelly Heller <kkheller@cedrus.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This commit is contained in:
committed by
Johannes Schindelin
parent
4c87c4e2e3
commit
e01e7cffb1
@@ -160,6 +160,24 @@ sub run_cmd_pipe {
|
||||
die "$^O does not support: @invalid\n" if @invalid;
|
||||
my @args = map { m/ /o ? "\"$_\"": $_ } @_;
|
||||
return qx{@args};
|
||||
} elsif (($^O eq 'MSWin32' || $^O eq 'msys') && (scalar @_ > 200) &&
|
||||
grep $_ eq '--', @_) {
|
||||
use File::Temp qw(tempfile);
|
||||
my ($fhargs, $filename) =
|
||||
tempfile('git-args-XXXXXX', UNLINK => 1);
|
||||
|
||||
my $cmd = 'cat '.$filename.' | xargs -0 -s 20000 ';
|
||||
while ($_[0] ne '--') {
|
||||
$cmd = $cmd . shift(@_) . ' ';
|
||||
}
|
||||
|
||||
shift(@_);
|
||||
print $fhargs join("\0", @_);
|
||||
close($fhargs);
|
||||
|
||||
my $fh = undef;
|
||||
open($fh, '-|', $cmd) or die;
|
||||
return <$fh>;
|
||||
} else {
|
||||
my $fh = undef;
|
||||
open($fh, '-|', @_) or die;
|
||||
|
||||
Reference in New Issue
Block a user