On Tue, Aug 10 2021, Derrick Stolee wrote: > On 8/5/2021 11:07 AM, Ævar Arnfjörð Bjarmason wrote: > ... >> +bundle-uri CLIENT AND SERVER EXPECTATIONS >> +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >> + >> +The advertised bundles MUST contain one or more reference tips for use >> +by the client. Bundles that are not self-contained MUST use the >> +standard "-" prefixes in the bundle format to indicate their >> +prerequisites. I.e. they must be in the standard format "git bundle >> +create" would create. >> + >> +If after an `ls-refs` the client finds that the ref tips it wants can >> +be retrieved entirety from advertised bundle(s), it MAY >> +disconnect. The results of such a "clone" or "fetch" should be >> +indistinguishable from the state attained without using bundle-uri. >> + >> +The client MAY also keep the connection open pending download of the >> +bundle-uris, e.g. should on or more downloads (or their validation) >> +fail. > > The only technical thought I had (so far) about this proposal was that > leaving the connection open while downloading the bundle would leave > unnecessary load on the servers when no communication is happening. > There is a cost to keeping an open SSH connection, so here it would be > good to at least have the Git client close the connection after > getting a 200 response from the bundle (but not waiting for all of its > contents). Thanks. Yes it's something I'll have to fix. I was hoping that I'd get away with it for an initial implementation, but e.g. using transfer.injectBundleURI to bootstrap chromium.git's repo from a bundle will take so long that Google's server will give up and hang up on you. I wonder if it's something the transport layer should be doing in general to resume connections if they go stale if it's at a point of clean separation in the dialog, but in any case I'll need it for bundle-uri. Closing the connection is also going to be more expensive in some cases, e.g. if the bundle takes 1s we'll open/close/download bundle-uri/open/close the connection, instead of of open/download bundle-uri/close. I wonder if anyone cares though, we can always apply some heuristic later I guess...