In the pack transfer protocol (Documentation\technical\pack-protocol.txt) the negotiation for refs is discussed, but its unclear to me if the negotiation explicitly navigates down into the trees and blobs of each commit that need to go into the pack.

From one perspective I can see that, in the main, it's only commit
objects that are being negotiated, and the DAG is used to imply which commit objects are to be sent between the wants and haves end points, without need to descend into their trees and blobs. The tags and the objects they point to are explicitly given so are negotiated easily.

The other view is that the negotiation should be listing every object of any type between the wants and haves as part of the negotiation. I just couldn't tell from the docs which assumption is appropriate. Is there any extra clarifications on this?

I ask as I was cogitating on options for a 'narrow' clone (to complement shallow clones ;-) that could, say, in some way limit the size of blobs downloaded, or the number of tree levels downloaded, or even path limiting.

Philip Oakley
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to
More majordomo info at

Reply via email to