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
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

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.