Nicolas Pitre [off-list ref] writes:
Why not just parse the pack header in receive-pack / fetch-pack, and
decide on the first-hand information? Sure the pack header is then
gone, but then the only thing that is needed is an extra flag to both
unpack-objects and index-pack to tell them that we've already parsed the
pack header and that the pack version is x and the number of objects is
y. Simply something like --pack_header=x,y. No protocol extension
needed, no extra rev-list, no reliance on the remote server providing
the needed info.
I like it.
Because that approach assumes recieve-pack and unpack-objects
and index-pack are from the same vintage (otherwise your
receive-pack would need to have a way to see if unpack-objects
and index-pack would grok --pack_header argument), we could even
get away without passing the pack version if we wanted to.