Skip to main content

RefSnapshot

Struct RefSnapshot 

Source
pub struct RefSnapshot { /* private fields */ }
Expand description

The reference namespace as of one call to refs().

Implementations§

Source§

impl RefSnapshot

Source

pub fn read(git: &dyn GitServe) -> Result<Self>

Take the snapshot.

Source

pub fn rows(&self) -> &[RefRow]

Every row, in the order the store gave them.

Source

pub fn with_prefix<'s>( &'s self, prefix: Option<&'s str>, ) -> impl Iterator<Item = &'s RefRow> + 's

The rows whose name starts with prefix; all of them for None.

Source

pub fn get(&self, name: &str) -> Option<&RefRow>

The row called name, if there is one.

Source

pub fn resolve(&self, name: &str) -> Result<Option<ObjectId>>

What name resolves to, following symbolic references.

None for a name this snapshot does not hold, and for a symbolic reference pointing at one — an unborn branch is the ordinary case of the second, not an error.

Source

pub fn head(&self, git: &dyn GitServe) -> Result<Option<ObjectId>>

What HEAD points at, asked through the accessor pair and resolved against this snapshot.

HEAD is not a row, so this is the only honest way to ask, and it is two questions rather than one: the pair answers what HEAD is, and the target of a symbolic answer resolves against the same snapshot, so a control-plane answer cannot name an oid for a reference that had already moved.

A repository whose HEAD names a branch that does not exist answers None, and that is the state ServerStores::adopt_default_branch_if_unborn exists to repair: stock git clone against it writes an empty worktree and exits 0.

Source

pub fn resolve_row(&self, row: &RefRow) -> Result<Option<ObjectId>>

RefSnapshot::resolve for a row already in hand.

A depth cap rather than a seen set, matching gunnar_store::refname::MAX_SYMREF_DEPTH: a cycle and a chain fifty deep are the same refusal, and the cap is a number an operator can be told. A cycle must not hang the advertisement, which is the whole reason this is not a while let.

Source

pub fn peeled(row: &RefRow) -> Result<Option<ObjectId>>

The peeled target a row already carries, when it has one.

RefRow::peeled is “for an annotated tag, the commit it peels to” and a backend that keeps a peel column answers it for free. None means “this backend does not say”, never “this tag peels to nothing”, so the caller falls back to peeling the object itself rather than advertising an unpeeled tag.

Auto Trait Implementations§

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> 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> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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<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