This is an archive of the discontinued Mercurial Phabricator instance.

rust-discovery: takefullsample() core implementation
ClosedPublic

Authored by gracinet on May 22 2019, 12:49 PM.

Details

Summary

take_full_sample() browses the undecided set in both directions: from
its roots as well as from its heads.

Following what's done on the Python side, we alter update_sample()
signature to take a closure returning an iterator: either ParentsIterator
or an iterator over the children found in children_cache. These constructs
should probably be split off in a separate module.

This is a first concrete example where a more abstract graph notion (probably
a trait) would be useful, as this is nothing but an operation on the reversed
DAG.

A similar motivation in the context of the discovery
process would be to replace the call to dagops::range in
add_missing_revisions() with a simple iteration over descendents, again an
operation on the reversed graph.

Diff Detail

Repository
rHG Mercurial
Lint
Lint Skipped
Unit
Unit Tests Skipped

Event Timeline

gracinet created this revision.May 22 2019, 12:49 PM

@kevincox this used to be D6260 (I don't think I changed anything besides rebasing)

kevincox accepted this revision.May 23 2019, 10:53 AM
kevincox added inline comments.
rust/hg-core/src/discovery.rs
126

I think it would be nice to remove the magic number.

if self.cur >= self.parents.len()
gracinet updated this revision to Diff 15482.Jun 13 2019, 9:32 AM
Alphare updated this revision to Diff 15934.Jul 17 2019, 12:30 PM
Alphare updated this revision to Diff 16012.Jul 23 2019, 5:14 AM
This revision was not accepted when it landed; it landed in state Needs Review.
This revision was automatically updated to reflect the committed changes.