Bundle-uri capability: Only advertise when bundle exist
All threads resolved!
All threads resolved!
Compare changes
There are no changes yet
No changes between version 6 and version 5
This MR is a building block towards enabling bundle-uri feature.
Here we modify the way bundle-uri
capability is advertised to the client to only make it so when a bundle exist for the given repository.
For SSH, this change does not provide much benefit since the whole packfile negociation flow is performed on a single connection. In other words, the flow starts when the client starts the upload-pack service, and it ends when the client received all the objects it needed.
For SmartHTTP, however, this is different. Each request/command sent by the client (ls-refs
, bundle-uri
, fetch
) is sent on different, stateless, RPC calls. There is no way to know what command the client is sending to the git-upload-pack process until that process is actually started, which means that the Git config injected into the process must be computed in advance for every request; this implies computing the SignedURL of the bundle if it exist. By advertising bundle-uri
capability only when a bundle exists for the given repository, we make sure the client won't send a bundle-uri
command if no bundle exist.
This not only reduces by 1 the number of round-trip request and the number of Git config computation, but it also make it easier to monitor the use of bundle-uri
feature, since now we can be sure that when a client sends the bundle-uri
command, it is because:
Thus, we now have a way to know if a client is using bundle-uri
or not.
References: #6572 (closed)
No changes between version 6 and version 5