pull: re-run discovery and pullbundle2 if server didn't send all heads

Authored by joerg.sonnenberger on Jan 12 2018, 5:08 PM.


Group Reviewers

Diff Detail

rHG Mercurial
Lint Skipped
Unit Tests Skipped

This is a proof-of-concept. There is an interaction with obsoletion that I am still trying to understand (and fix).

With the last update, the obs issues are resolved.

indygreg requested changes to this revision.Jan 14 2018, 5:04 PM
indygreg added a subscriber: indygreg.

I'm generally in favor of this functionality. It enables some interesting server features (such as pullbundles).

This review needs to get hooked up to the Phabricator "stack" as the pullbundles patch(es). Using hg phabsend A::B should do that.

I'd like to see a test around a server not sending changegroup data. I /think/ the existing code will abort the while True loop in this case. But I don't fully understand when various attributes on pullop are updated. I'd also feel more comfortable about things if there were an explicit check in the loop that the tip of changelog increased if revisions were requested. I'm worried about getting into an infinite loop due to a misbehaving server. I /think/ I'd like to see the establishment of a contract that if revision data is requested, the server MUST respond with revision data.

This revision now requires changes to proceed.Jan 14 2018, 5:04 PM

Merging into the parent review.