Struct Dag

Source
pub struct Dag {
    pub head_commit: CommitSet,
    pub main_branch_commit: CommitSet,
    pub branch_commits: CommitSet,
    /* private fields */
}
Expand description

Interface to access the directed acyclic graph (DAG) representing Git’s commit graph. Based on the Eden SCM DAG.

Fields§

§head_commit: CommitSet

A set containing the commit which HEAD points to. If HEAD is unborn, this is an empty set.

§main_branch_commit: CommitSet

A set containing the commit that the main branch currently points to.

§branch_commits: CommitSet

A set containing all commits currently pointed to by local branches.

Implementations§

Source§

impl Dag

Source

pub fn try_clone(&self, repo: &Repo) -> Result<Self>

Reopen the DAG for the given repository.

Source

pub fn open_and_sync( effects: &Effects, repo: &Repo, event_replayer: &EventReplayer, event_cursor: EventCursor, references_snapshot: &RepoReferencesSnapshot, ) -> Result<Self>

Initialize the DAG for the given repository, and update it with any newly-referenced commits.

Source

pub fn open_without_syncing( effects: &Effects, repo: &Repo, event_replayer: &EventReplayer, event_cursor: EventCursor, references_snapshot: &RepoReferencesSnapshot, ) -> Result<Self>

Initialize a DAG for the given repository, without updating it with new commits that may have appeared.

If used improperly, commit lookups could fail at runtime. This function should only be used for opening the DAG when it’s known that no more live commits have appeared.

Source

pub fn sync_from_oids( &mut self, effects: &Effects, repo: &Repo, master_heads: CommitSet, non_master_heads: CommitSet, ) -> Result<()>

Update the DAG with the given heads.

Source

pub fn set_cursor( &self, effects: &Effects, repo: &Repo, event_replayer: &EventReplayer, event_cursor: EventCursor, ) -> Result<Self>

Create a new version of this DAG at the point in time represented by event_cursor.

Source

pub fn clear_obsolete_commits(&self, repo: &Repo) -> Result<Self>

Create a new Dag with no obsolete commits.

Source

pub fn sort(&self, commit_set: &CommitSet) -> Result<Vec<NonZeroOid>>

Wrapper around DAG method.

Source

pub fn commit_set_to_vec( &self, commit_set: &CommitSet, ) -> Result<Vec<NonZeroOid>>

Eagerly convert a CommitSet into a Vec<NonZeroOid> by iterating over it, preserving order.

Source

pub fn get_only_parent_oid(&self, oid: NonZeroOid) -> Result<NonZeroOid>

Get the parent OID for the given OID. Returns an error if the given OID does not have exactly 1 parent.

Source

pub fn query(&self) -> &Dag

Conduct an arbitrary query against the DAG.

Source

pub fn is_public_commit(&self, commit_oid: NonZeroOid) -> Result<bool>

Determine whether or not the given commit is a public commit (i.e. is an ancestor of the main branch).

Source

pub fn query_is_ancestor( &self, ancestor: NonZeroOid, descendant: NonZeroOid, ) -> Result<bool>

Wrapper around DAG method.

Source

pub fn set_is_empty(&self, commit_set: &CommitSet) -> Result<bool>

Wrapper around NameSet method.

Source

pub fn set_contains<T: Into<CommitVertex> + Debug>( &self, commit_set: &CommitSet, oid: T, ) -> Result<bool>

Wrapper around NameSet method.

Source

pub fn set_count(&self, commit_set: &CommitSet) -> Result<usize>

Wrapper around NameSet method.

Source

pub fn set_first(&self, commit_set: &CommitSet) -> Result<Option<CommitVertex>>

Wrapper around NameSet method.

Source

pub fn query_public_commits_slow(&self) -> Result<&CommitSet>

Return the set of commits which are public, as per the definition in is_public_commit. You should try to use is_public_commit instead, as it will be faster to compute.

Source

pub fn query_visible_heads(&self) -> Result<&CommitSet>

Determine the set of commits which are considered to be “visible”. A commit is “visible” if it is not obsolete or has a non-obsolete descendant.

Source

pub fn query_visible_commits_slow(&self) -> Result<&CommitSet>

Query the set of all visible commits, as per the definition in query_visible_heads. You should try to use query_visible_heads instead if possible, since it will be faster to compute.

Source

pub fn filter_visible_commits(&self, commits: CommitSet) -> Result<CommitSet>

Keep only commits in the given set which are visible, as per the definition in query_visible_heads.

Source

pub fn query_obsolete_commits(&self) -> CommitSet

Determine the set of obsolete commits. These commits have been rewritten or explicitly hidden by the user.

Source

pub fn query_draft_commits(&self) -> Result<&CommitSet>

Determine the set of “draft” commits. The draft commits are all visible commits which aren’t public.

Source

pub fn query_stack_commits(&self, commit_set: CommitSet) -> Result<CommitSet>

Determine the connected components among draft commits (commit “stacks”) that intersect with the provided set.

Source

pub fn query_all(&self) -> Result<CommitSet>

Wrapper around DAG method.

Source

pub fn query_parents(&self, commit_set: CommitSet) -> Result<CommitSet>

Wrapper around DAG method.

Source

pub fn query_parent_names<T: Into<CommitVertex> + Debug>( &self, vertex: T, ) -> Result<Vec<CommitVertex>>

Wrapper around DAG method.

Source

pub fn query_ancestors(&self, commit_set: CommitSet) -> Result<CommitSet>

Wrapper around DAG method.

Source

pub fn query_first_ancestor_nth( &self, vertex: CommitVertex, n: u64, ) -> Result<Option<CommitVertex>>

Wrapper around DAG method.

Source

pub fn query_children(&self, commit_set: CommitSet) -> Result<CommitSet>

Wrapper around DAG method.

Source

pub fn query_descendants(&self, commit_set: CommitSet) -> Result<CommitSet>

Wrapper around DAG method.

Source

pub fn query_roots(&self, commit_set: CommitSet) -> Result<CommitSet>

Wrapper around DAG method.

Source

pub fn query_heads(&self, commit_set: CommitSet) -> Result<CommitSet>

Wrapper around DAG method.

Source

pub fn query_heads_ancestors(&self, commit_set: CommitSet) -> Result<CommitSet>

Wrapper around DAG method.

Source

pub fn query_only( &self, reachable: CommitSet, unreachable: CommitSet, ) -> Result<CommitSet>

Wrapper around DAG method.

Source

pub fn query_range( &self, roots: CommitSet, heads: CommitSet, ) -> Result<CommitSet>

Wrapper around DAG method.

Source

pub fn query_common_ancestors(&self, commit_set: CommitSet) -> Result<CommitSet>

Wrapper around DAG method.

Source

pub fn query_gca_one( &self, commit_set: CommitSet, ) -> Result<Option<CommitVertex>>

Wrapper around DAG method.

Source

pub fn query_gca_all(&self, commit_set: CommitSet) -> Result<CommitSet>

Wrapper around DAG method.

Source

pub fn get_connected_components( &self, commit_set: &CommitSet, ) -> Result<Vec<CommitSet>>

Given a CommitSet, return a list of CommitSets, each representing a connected component of the set.

For example, if the DAG contains commits A-B-C-D-E-F and the given CommitSet contains B, C, E, this will return 2 CommitSets: 1 containing B, C and another containing only E

Trait Implementations§

Source§

impl Debug for Dag

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl !Freeze for Dag

§

impl !RefUnwindSafe for Dag

§

impl Send for Dag

§

impl Sync for Dag

§

impl Unpin for Dag

§

impl !UnwindSafe for Dag

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<D> OwoColorize for D

Source§

fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>
where C: Color,

Set the foreground color generically Read more
Source§

fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>
where C: Color,

Set the background color generically. Read more
Source§

fn black(&self) -> FgColorDisplay<'_, Black, Self>

Change the foreground color to black
Source§

fn on_black(&self) -> BgColorDisplay<'_, Black, Self>

Change the background color to black
Source§

fn red(&self) -> FgColorDisplay<'_, Red, Self>

Change the foreground color to red
Source§

fn on_red(&self) -> BgColorDisplay<'_, Red, Self>

Change the background color to red
Source§

fn green(&self) -> FgColorDisplay<'_, Green, Self>

Change the foreground color to green
Source§

fn on_green(&self) -> BgColorDisplay<'_, Green, Self>

Change the background color to green
Source§

fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>

Change the foreground color to yellow
Source§

fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>

Change the background color to yellow
Source§

fn blue(&self) -> FgColorDisplay<'_, Blue, Self>

Change the foreground color to blue
Source§

fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>

Change the background color to blue
Source§

fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to magenta
Source§

fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to magenta
Source§

fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to purple
Source§

fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to purple
Source§

fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>

Change the foreground color to cyan
Source§

fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>

Change the background color to cyan
Source§

fn white(&self) -> FgColorDisplay<'_, White, Self>

Change the foreground color to white
Source§

fn on_white(&self) -> BgColorDisplay<'_, White, Self>

Change the background color to white
Source§

fn default_color(&self) -> FgColorDisplay<'_, Default, Self>

Change the foreground color to the terminal default
Source§

fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>

Change the background color to the terminal default
Source§

fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>

Change the foreground color to bright black
Source§

fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>

Change the background color to bright black
Source§

fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>

Change the foreground color to bright red
Source§

fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>

Change the background color to bright red
Source§

fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>

Change the foreground color to bright green
Source§

fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>

Change the background color to bright green
Source§

fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>

Change the foreground color to bright yellow
Source§

fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>

Change the background color to bright yellow
Source§

fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>

Change the foreground color to bright blue
Source§

fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>

Change the background color to bright blue
Source§

fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright magenta
Source§

fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright magenta
Source§

fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright purple
Source§

fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright purple
Source§

fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>

Change the foreground color to bright cyan
Source§

fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>

Change the background color to bright cyan
Source§

fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>

Change the foreground color to bright white
Source§

fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>

Change the background color to bright white
Source§

fn bold(&self) -> BoldDisplay<'_, Self>

Make the text bold
Source§

fn dimmed(&self) -> DimDisplay<'_, Self>

Make the text dim
Source§

fn italic(&self) -> ItalicDisplay<'_, Self>

Make the text italicized
Source§

fn underline(&self) -> UnderlineDisplay<'_, Self>

Make the text underlined
Make the text blink
Make the text blink (but fast!)
Source§

fn reversed(&self) -> ReversedDisplay<'_, Self>

Swap the foreground and background colors
Source§

fn hidden(&self) -> HiddenDisplay<'_, Self>

Hide the text
Source§

fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>

Cross out the text
Source§

fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the foreground color at runtime. Only use if you do not know which color will be used at compile-time. If the color is constant, use either OwoColorize::fg or a color-specific method, such as OwoColorize::green, Read more
Source§

fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the background color at runtime. Only use if you do not know what color to use at compile-time. If the color is constant, use either OwoColorize::bg or a color-specific method, such as OwoColorize::on_yellow, Read more
Source§

fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the foreground color to a specific RGB value.
Source§

fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the background color to a specific RGB value.
Source§

fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>

Sets the foreground color to an RGB value.
Source§

fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>

Sets the background color to an RGB value.
Source§

fn style(&self, style: Style) -> Styled<&Self>

Apply a runtime-determined style
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> With for T

Source§

fn wrap_with<U, F>(self, f: F) -> U
where F: FnOnce(Self) -> U,

Calls the given closure and return the result. Read more
Source§

fn with<F>(self, f: F) -> Self
where F: FnOnce(&mut Self),

Calls the given closure on self.
Source§

fn try_with<E, F>(self, f: F) -> Result<Self, E>
where F: FnOnce(&mut Self) -> Result<(), E>,

Calls the given closure on self.
Source§

fn with_if<F>(self, condition: bool, f: F) -> Self
where F: FnOnce(&mut Self),

Calls the given closure if condition == true.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> Erased for T

Source§

impl<T> Erased for T

Source§

impl<T> ErasedDestructor for T
where T: 'static,