Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Overview
Deployment
Adds a simple causal-dependencies API for UCM to determine before a pull which hashes it actually needs.
The causal-dependencies endpoint returns a stream of causals to UCM , each tagged with whether it's part of the top-level history of the root, or whether it's a lib root.
UCM can then pick out which of these dependencies it does have, then send those to the server with the pull.v2 request; where Share will cull entire subtrees based on the dependencies it knows UCM has already.
This allows us to use pull.v2 in cases where it's likely to be a small update.
Test coverage
I've tested this locally, I'll throw it up on staging and run it through its paces.
Luckily its' back-compatible with the previous syncv2 version, which simply doesn't do the pre-negotiation.
Loose ends
We may wish to recurse causal-negotiation on lib deps which have missing deps as well. Should be easy enough to include hash-jwts for those;
Or we can do this on the server and include those deps in the initial stream.