This is an archive of the discontinued Mercurial Phabricator instance.

exchangev2: support for calling rawstorefiledata to retrieve raw files
ClosedPublic

Authored by indygreg on Oct 17 2018, 9:17 AM.

Details

Summary

This is somewhat hacky. For that I apologize.

At the 4.8 Sprint, we decided we wanted to land support in wireprotov2 for doing
a partial clone with changelog and manifestlog bootstrapped from a "stream clone"
like primitive.

This commit implements the client-side bits necessary to facilitate that.

If the new server-side command for obtaining raw files data is available, we
call it to get the raw files for the changelog and manifestlog. Then we
fall through to an incremental pull. But when fetching files data, instead
of using the list of a changesets and manifests that we fetched via the
"changesetdata" command, we do a linear scan of the repo and resolve the
changeset and manifest nodes along with the manifest linkrevs.

Diff Detail

Repository
rHG Mercurial
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

indygreg created this revision.Oct 17 2018, 9:17 AM

I have significant misgivings about exchanging raw disk contents. We should revisit this and see if we can do better in the future.

This revision was automatically updated to reflect the committed changes.