git-svnimport.perl: fix for 'arg list too long...'

This fixes 'arg list too long..' problem with git-ls-files.

Note that second arg list separation loop (with 'git-update-index') is
needed since git-ls-files arguments can be directories.

Signed-off-by: Sasha Khapyorsky <sashak@voltaire.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Sasha Khapyorsky 2006-02-01 17:53:31 +02:00 committed by Junio C Hamano
parent cb754fdf5a
commit d9e2e12700

View File

@ -546,23 +546,30 @@ sub commit {
}
}
if(@old) {
open my $F, "-|", "git-ls-files", "-z", @old or die $!;
@old = ();
while(@old) {
my @o1;
if(@old > 55) {
@o1 = splice(@old,0,50);
} else {
@o1 = @old;
@old = ();
}
open my $F, "-|", "git-ls-files", "-z", @o1 or die $!;
@o1 = ();
local $/ = "\0";
while(<$F>) {
chomp;
push(@old,$_);
push(@o1,$_);
}
close($F);
while(@old) {
while(@o1) {
my @o2;
if(@old > 55) {
@o2 = splice(@old,0,50);
if(@o1 > 55) {
@o2 = splice(@o1,0,50);
} else {
@o2 = @old;
@old = ();
@o2 = @o1;
@o1 = ();
}
system("git-update-index","--force-remove","--",@o2);
die "Cannot remove files: $?\n" if $?;