pub struct CompositeIndex(/* private fields */);Expand description
CompositeIndex provides an index of both commit IDs and change IDs.
We refer to this as a composite index because it’s a composite of multiple nested index segments where each parent segment is roughly twice as large its child. segment. This provides a good balance between read and write performance.
Implementations§
Source§impl CompositeIndex
impl CompositeIndex
pub fn num_commits(&self) -> u32
pub fn stats(&self) -> IndexStats
pub fn entry_by_pos(&self, pos: IndexPosition) -> IndexEntry<'_>
pub fn entry_by_id(&self, commit_id: &CommitId) -> Option<IndexEntry<'_>>
pub fn commit_id_to_pos(&self, commit_id: &CommitId) -> Option<IndexPosition>
Sourcepub fn heads_pos(
&self,
candidate_positions: Vec<IndexPosition>,
) -> Vec<IndexPosition>
pub fn heads_pos( &self, candidate_positions: Vec<IndexPosition>, ) -> Vec<IndexPosition>
Returns the subset of positions in candidate_positions which refer to
entries that are heads in the repository.
The candidate_positions must be sorted in descending order, and have
no duplicates. The returned head positions are also sorted in descending
order.
Trait Implementations§
Source§impl AsCompositeIndex for CompositeIndex
impl AsCompositeIndex for CompositeIndex
Source§fn as_composite(&self) -> &CompositeIndex
fn as_composite(&self) -> &CompositeIndex
Source§impl Index for &CompositeIndex
impl Index for &CompositeIndex
Source§fn shortest_unique_commit_id_prefix_len(&self, commit_id: &CommitId) -> usize
fn shortest_unique_commit_id_prefix_len(&self, commit_id: &CommitId) -> usize
Suppose the given commit_id exists, returns the minimum prefix length
to disambiguate it. The length to be returned is a number of hexadecimal
digits.
If the given commit_id doesn’t exist, this will return the prefix
length that never matches with any commit ids.
Source§fn resolve_commit_id_prefix(
&self,
prefix: &HexPrefix,
) -> PrefixResolution<CommitId>
fn resolve_commit_id_prefix( &self, prefix: &HexPrefix, ) -> PrefixResolution<CommitId>
prefix. Returns a
PrefixResolution with a CommitId if the prefix matches a single
commit.Source§fn has_id(&self, commit_id: &CommitId) -> bool
fn has_id(&self, commit_id: &CommitId) -> bool
commit_id is present in the index.Source§fn is_ancestor(&self, ancestor_id: &CommitId, descendant_id: &CommitId) -> bool
fn is_ancestor(&self, ancestor_id: &CommitId, descendant_id: &CommitId) -> bool
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>
fn common_ancestors( &self, set1: &[CommitId], set2: &[CommitId], ) -> Vec<CommitId>
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>
fn all_heads_for_gc( &self, ) -> Result<Box<dyn Iterator<Item = CommitId> + '_>, AllHeadsForGcUnsupported>
Source§fn heads(
&self,
candidate_ids: &mut dyn Iterator<Item = &CommitId>,
) -> Result<Vec<CommitId>, IndexError>
fn heads( &self, candidate_ids: &mut dyn Iterator<Item = &CommitId>, ) -> Result<Vec<CommitId>, IndexError>
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>
fn evaluate_revset<'index>( &'index self, expression: &ResolvedExpression, store: &Arc<Store>, ) -> Result<Box<dyn Revset + 'index>, RevsetEvaluationError>
expression against the index and corresponding
store.