This is an archive of the discontinued Mercurial Phabricator instance.

[PoC] changegroup: delete obs markers when applying changegroup
Needs RevisionPublic

Authored by indygreg on Mar 4 2018, 7:43 PM.

Details

Reviewers
baymax
Group Reviewers
hg-reviewers
Summary

In local-only obsolescence mode, our short-term hack to unhide a
changeset is to delete obsolescence markers causing it to be hidden.
We need to do this every time a changeset is introduced into the
repository.

I was hoping we could implement the unhide logic once, around
transaction close time. However, it appears that we'll need to
teach every mechanism that introduces changesets to unhide
changesets because of interaction between those mechanisms and
visibility. For example, changegroup application no-ops on incoming
changesets that are present but hidden. The code that scans for
"new" changesets is based on changesets between the old and new
changelog length. Since the unhidden changeset is possibly older
than the old changelog length, we need to either track unhides
explicitly or deal with them specially.

This commit teaches changegroup application to record which changesets
are in the incoming changegroup so it can scan for relevant
obsolescence markers after changegroup applications and delete
their markers.

I'm not convinced this is the best approach to the problem. But it's
a start.

Diff Detail

Repository
rHG Mercurial
Lint
Lint Skipped
Unit
Unit Tests Skipped

Event Timeline

indygreg created this revision.Mar 4 2018, 7:43 PM
baymax requested changes to this revision.Jan 24 2020, 12:33 PM

There seems to have been no activities on this Diff for the past 3 Months.

By policy, we are automatically moving it out of the need-review state.

Please, move it back to need-review without hesitation if this diff should still be discussed.

:baymax:need-review-idle:

This revision now requires changes to proceed.Jan 24 2020, 12:33 PM