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
.