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: BTreeSet<IndexPosition>,
) -> BTreeSet<IndexPosition>
pub fn heads_pos( &self, candidate_positions: BTreeSet<IndexPosition>, ) -> BTreeSet<IndexPosition>
Returns the subset of positions in candidate_positions
which refer to
entries that are heads in the repository.
Trait Implementations§
Source§impl AsCompositeIndex for CompositeIndex
impl AsCompositeIndex for CompositeIndex
Source§fn as_composite(&self) -> &CompositeIndex
fn as_composite(&self) -> &CompositeIndex
Returns reference wrapper that provides global access to this index.
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>
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
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
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>
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>
fn all_heads_for_gc( &self, ) -> Result<Box<dyn Iterator<Item = CommitId> + '_>, AllHeadsForGcUnsupported>
Heads among all indexed commits at the associated operation. Read more
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>
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>
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
.