HomePhabricator

treemanifest: allow using manifest nodes as base nodes during pack fetch

Authored by durham.

Description

treemanifest: allow using manifest nodes as base nodes during pack fetch

Summary:
When requesting trees from the server, the client sends a list of manifest nodes
it wants and base nodes it has, then the server sends back any parts of the tree
that are in the desired manifests but not in the base nodes. If no base nodes
are sent, then the server tries to pick appropriate base nodes from the list of
manifests being requested.

Previously, when requesting manifest X, it would only try to pick X^ as the base
node (assuming X^ was in the request set). This meant that if you requested X
and X^^, it wouldn't realize they were very similar and instead it would send
the entire X and entire X^^ trees (with lots of duplication).

With this patch, it will always use the previously requested manifest as the
base node for the next manifest, if no base nodes are specified. So requests X
and X^^ will return the minimal set of nodes.

Test Plan: Added a test. It fails before and passes afterwards

Reviewers: #fbhgext, simpkins

Reviewed By: #fbhgext, simpkins

Differential Revision: https://phab.mercurial-scm.org/D75

Details

Committed
durhamJul 14 2017, 1:34 PM
Reviewer
Restricted Project
Differential Revision
D75: treemanifest: allow using manifest nodes as base nodes during pack fetch
Parents
rFBHGXb42a9bc316cb: infinitepush: backout lfs fix
Branches
Unknown
Tags
Unknown