Trait Index

Source
pub trait Index: Send + Sync {
    // Required methods
    fn shortest_unique_commit_id_prefix_len(
        &self,
        commit_id: &CommitId,
    ) -> usize;
    fn resolve_commit_id_prefix(
        &self,
        prefix: &HexPrefix,
    ) -> PrefixResolution<CommitId>;
    fn has_id(&self, commit_id: &CommitId) -> bool;
    fn is_ancestor(
        &self,
        ancestor_id: &CommitId,
        descendant_id: &CommitId,
    ) -> bool;
    fn common_ancestors(
        &self,
        set1: &[CommitId],
        set2: &[CommitId],
    ) -> Vec<CommitId>;
    fn all_heads_for_gc(
        &self,
    ) -> Result<Box<dyn Iterator<Item = CommitId> + '_>, AllHeadsForGcUnsupported>;
    fn heads(
        &self,
        candidates: &mut dyn Iterator<Item = &CommitId>,
    ) -> Result<Vec<CommitId>, IndexError>;
    fn evaluate_revset<'index>(
        &'index self,
        expression: &ResolvedExpression,
        store: &Arc<Store>,
    ) -> Result<Box<dyn Revset + 'index>, RevsetEvaluationError>;
}
Expand description

Defines the interface for types that provide an index of the commits in a repository by CommitId.

Required Methods§

Source

fn shortest_unique_commit_id_prefix_len(&self, commit_id: &CommitId) -> usize

Returns the minimum prefix length to disambiguate commit_id from other commits in the index. The length returned is the number of hexadecimal digits in the minimum prefix.

If the given commit_id doesn’t exist, returns the minimum prefix length which matches none of the commits in the index.

Source

fn resolve_commit_id_prefix( &self, prefix: &HexPrefix, ) -> PrefixResolution<CommitId>

Searches the index for commit IDs matching prefix. Returns a PrefixResolution with a CommitId if the prefix matches a single commit.

Source

fn has_id(&self, commit_id: &CommitId) -> bool

Returns true if commit_id is present in the index.

Source

fn is_ancestor(&self, ancestor_id: &CommitId, descendant_id: &CommitId) -> bool

Returns true if ancestor_id commit is an ancestor of the descendant_id commit, or if ancestor_id equals descendant_id.

Source

fn common_ancestors( &self, set1: &[CommitId], set2: &[CommitId], ) -> Vec<CommitId>

Returns the best common ancestor or ancestors of the commits in set1 and set2. A “best common ancestor” has no descendants that are also common ancestors.

Source

fn all_heads_for_gc( &self, ) -> Result<Box<dyn Iterator<Item = CommitId> + '_>, AllHeadsForGcUnsupported>

Heads among all indexed commits at the associated operation.

Suppose the index contains all the historical heads and their ancestors/predecessors reachable from the associated operation, this function returns the heads that should be preserved on garbage collection.

The iteration order is unspecified.

Source

fn heads( &self, candidates: &mut dyn Iterator<Item = &CommitId>, ) -> Result<Vec<CommitId>, IndexError>

Returns the subset of commit IDs in candidates which are not ancestors of other commits in candidates. If a commit id is duplicated in the candidates list it will appear at most once in the output.

Source

fn evaluate_revset<'index>( &'index self, expression: &ResolvedExpression, store: &Arc<Store>, ) -> Result<Box<dyn Revset + 'index>, RevsetEvaluationError>

Resolves the revset expression against the index and corresponding store.

Implementors§