This is an archive of the discontinued Mercurial Phabricator instance.

sparse-revlog: only refine delta candidates in the sparse case (issue6006)
ClosedPublic

Authored by lothiraldan on Oct 31 2018, 6:18 AM.

Details

Summary

Starting with 5aef5afa8654, a valid delta parent might be "refined". This
allows repository using sparse-revlog to produce better delta chain by using
better intermediate snapshot base.

However, this refining step was performed in all cases, including for
repository not using sparse-revlog. This could produce a strange chain in the
general delta case and corrupted repository in the non-general delta case.

We now skip this step unless sparse-revlog is in use.

In issue 6006, Yuya Nishihara provided a test case using an external
repository, so we did not include it. Finding "laboratory" condition to
reproduce this case and implementing an efficient test reproducing it is a bit
tricky. We do not foresee to have the time to provide one by the release date.

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

lothiraldan created this revision.Oct 31 2018, 6:18 AM
This revision was automatically updated to reflect the committed changes.