pub struct Platform<'repo> { /* private fields */ }
Expand description
A platform to traverse the revision graph by adding starting points as well as points which shouldn’t be crossed,
returned by Repository::rev_walk()
.
Note that we automatically leverage the commitgraph data structure, but if you know that additional information like author or commit messages will be required of all commits traversed here, it should be better to avoid trying to load it by turning commit-graph support off. This certainly is a micro-optimization though.
Implementations§
source§impl<'repo> Platform<'repo>
impl<'repo> Platform<'repo>
Create-time builder methods
sourcepub fn sorting(self, sorting: Sorting) -> Self
pub fn sorting(self, sorting: Sorting) -> Self
Set the sort mode for commits to the given value. The default is to order topologically breadth-first.
sourcepub fn first_parent_only(self) -> Self
pub fn first_parent_only(self) -> Self
Only traverse the first parent of the commit graph.
sourcepub fn use_commit_graph(self, toggle: impl Into<Option<bool>>) -> Self
pub fn use_commit_graph(self, toggle: impl Into<Option<bool>>) -> Self
Allow using the commitgraph, if present, if toggle
is true
, or disallow it with false
. Set it to None
to leave
control over this to the configuration of core.commitGraph
(the default).
Errors when loading the graph lead to falling back to the object database, it’s treated as optional cache.
sourcepub fn with_commit_graph(self, graph: Option<Graph>) -> Self
pub fn with_commit_graph(self, graph: Option<Graph>) -> Self
Set or unset the commit-graph to use for the iteration. This is useful if the caller wants to check if a commit-graph exists and refer different implementations depending on the outcome.
It interacts with use_commit_graph
as one would expect, but it’s worth noting that if None
,
with use_commit_graph
being true
, a graph will still be used for iteration.
To turn the commit-graph off, call use_commit_graph(false)
instead.
source§impl<'repo> Platform<'repo>
impl<'repo> Platform<'repo>
Produce the iterator
sourcepub fn selected(
self,
filter: impl FnMut(&oid) -> bool + 'repo
) -> Result<Walk<'repo>, Error>
pub fn selected( self, filter: impl FnMut(&oid) -> bool + 'repo ) -> Result<Walk<'repo>, Error>
For each commit, let filter
return true
if it and its parents should be included in the traversal, or false
if the traversal should exclude it and its ancestry entirely.
If filter
is None, no pruning of the graph will be performed which is the default.
sourcepub fn all(self) -> Result<Walk<'repo>, Error>
pub fn all(self) -> Result<Walk<'repo>, Error>
Return an iterator to traverse all commits reachable as configured by the Platform.
§Performance
It’s highly recommended to set an object cache
on the parent repo
to greatly speed up performance if the returned id is supposed to be looked up right after.