Bundle-uri capability: Only advertise when bundle exist
All threads resolved!
All threads resolved!
Compare changes
Files
8- Olivier Campeau authored
This commit modify the way `bundle-uri` capability is advertied 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: 1. A bundle exists 2. The server advertised the capability 3. The client support the capability Thus, we now have a way to know if a client is using `bundle-uri` or not. References: #6572
+ 24
− 39
@@ -2,61 +2,45 @@ package bundleuri
@@ -2,61 +2,45 @@ package bundleuri
@@ -71,7 +55,7 @@ func UploadPackGitConfig(
@@ -71,7 +55,7 @@ func UploadPackGitConfig(
@@ -91,5 +75,6 @@ func UploadPackGitConfig(
@@ -91,5 +75,6 @@ func UploadPackGitConfig(