Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
git-svnimport.perl: fix for 'arg list too long...'
author
Sasha Khapyorsky
<sashak@voltaire.com>
Wed, 1 Feb 2006 15:53:31 +0000
(17:53 +0200)
committer
Junio C Hamano
<junkio@cox.net>
Wed, 1 Feb 2006 22:23:47 +0000
(14:23 -0800)
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>
git-svnimport.perl
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
cb754fd
)
diff --git
a/git-svnimport.perl
b/git-svnimport.perl
index 6e3a44a2bc9fbf170db45a7e390d6ac8ffbb6f02..b6799d81ee36f041ddf3d6233d3f2fa005fea174 100755
(executable)
--- a/
git-svnimport.perl
+++ b/
git-svnimport.perl
@@
-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;
local $/ = "\0";
while(<$F>) {
chomp;
- push(@o
ld
,$_);
+ push(@o
1
,$_);
}
close($F);
}
close($F);
- while(@o
ld
) {
+ while(@o
1
) {
my @o2;
my @o2;
- if(@o
ld
> 55) {
- @o2 = splice(@o
ld
,0,50);
+ if(@o
1
> 55) {
+ @o2 = splice(@o
1
,0,50);
} else {
} else {
- @o2 = @o
ld
;
- @o
ld
= ();
+ @o2 = @o
1
;
+ @o
1
= ();
}
system("git-update-index","--force-remove","--",@o2);
die "Cannot remove files: $?\n" if $?;
}
system("git-update-index","--force-remove","--",@o2);
die "Cannot remove files: $?\n" if $?;