diff options
author | Jeff King <peff@peff.net> | 2006-05-23 03:27:45 -0400 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-05-23 00:41:39 -0700 |
commit | 6a1871e174fee1757713df7a3d776dd3813e7ad8 (patch) | |
tree | b00614f5671de2dc2564ea8816110ab30d74eaa7 /git-cvsimport.perl | |
parent | 443f8338b9e248353a7095a1096684f1ed106c66 (diff) | |
download | git-6a1871e174fee1757713df7a3d776dd3813e7ad8.tar.gz |
cvsimport: use git-update-index --index-info
This should reduce the number of git-update-index forks required per
commit. We now do adds/removes in one call, and we are no longer forced to
deal with argv limitations.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'git-cvsimport.perl')
-rwxr-xr-x | git-cvsimport.perl | 36 |
1 files changed, 13 insertions, 23 deletions
diff --git a/git-cvsimport.perl b/git-cvsimport.perl index 712cdc0e32..90ca018261 100755 --- a/git-cvsimport.perl +++ b/git-cvsimport.perl @@ -565,29 +565,19 @@ my($patchset,$date,$author_name,$author_email,$branch,$ancestor,$tag,$logmsg); my(@old,@new,@skipped); sub commit { my $pid; - while(@old) { - my @o2; - if(@old > 55) { - @o2 = splice(@old,0,50); - } else { - @o2 = @old; - @old = (); - } - system("git-update-index","--force-remove","--",@o2); - die "Cannot remove files: $?\n" if $?; - } - while(@new) { - my @n2; - if(@new > 12) { - @n2 = splice(@new,0,10); - } else { - @n2 = @new; - @new = (); - } - system("git-update-index","--add", - (map { ('--cacheinfo', @$_) } @n2)); - die "Cannot add files: $?\n" if $?; - } + + open(my $fh, '|-', qw(git-update-index -z --index-info)) + or die "unable to open git-update-index: $!"; + print $fh + (map { "0 0000000000000000000000000000000000000000\t$_\0" } + @old), + (map { '100' . sprintf('%o', $_->[0]) . " $_->[1]\t$_->[2]\0" } + @new) + or die "unable to write to git-update-index: $!"; + close $fh + or die "unable to write to git-update-index: $!"; + $? and die "git-update-index reported error: $?"; + @old = @new = (); $pid = open(C,"-|"); die "Cannot fork: $!" unless defined $pid; |