Re: git-cvsexportcommit fails for huge commits
- From
Jeff King <peff@peff.net>
- Date
- Dec 12, 2007, 09:25 UTC
- Message-ID
- <20071212092512.GB20799@coredump.intra.peff.net>
- In-Reply-To
- <7vir348e0l.fsf@gitster.siamese.dyndns.org>
On Wed, Dec 12, 2007 at 01:21:14AM -0800, Junio C Hamano wrote:
Show 18 quoted lines
> > +sub xargs_safe_pipe_capture {
> > + my $MAX_ARG_LENGTH = 1024;
> > + my $cmd = shift;
> > + my @output;
> > + while(@_) {
> > + my @args;
> > + my $length = 0;
> > + while(@_ && $length < $MAX_ARG_LENGTH) {
> > + push @args, shift;
> > + $length += length($args[$#args]);
> > + }
> > + push @output, safe_pipe_capture(@$cmd, @args);
> > + }
> > + return @output;
> > +}
> > +
>
> Makes me wonder why you are not spawning xargs by doing it by hand. IfBecause we are reading the output, and it is possible to get a pipe deadlock. This could be avoided with a tempfile.
> the path at the beginning happens to be longer than 1024 then you will > run path-less "cvs status"?
No, read the loop again. The length starts at 0, so we always go through the loop body once.
-Peff