Shawn Pearce [off-list ref] writes:
I was thinking of just reading the pack header in receive-pack,
checking the object count, and if its over a configured threshold
call index-pack rather than unpack-objects. Unfortunately I just
realized that if we read the pack header to make that decision then
its gone and the child process won't have it. :-(
If you want to do that, that is certainly possible.
You can read the first block in the parent (without discarding),
make the decision and then fork()+exec() either unpack-objects
or index-pack and feed it from the parent. The parent first
feeds the initial block it read to make that decision, and then
becomes a cat that reads from send-pack and writes to the child
process that is either unpack-objects or index-pack.