cargo::sources::git::utils

Struct GitCheckout

Source
pub struct GitCheckout<'a> {
    database: &'a GitDatabase,
    path: PathBuf,
    revision: Oid,
    repo: Repository,
}
Expand description

A local checkout of a particular revision from a GitDatabase.

Fields§

§database: &'a GitDatabase

The git database where this checkout is cloned from.

§path: PathBuf

Path to the root of the underlying Git repository on the local filesystem.

§revision: Oid

The git revision this checkout is for.

§repo: Repository

Underlying Git repository instance for this checkout.

Implementations§

Source§

impl<'a> GitCheckout<'a>

Source

fn new( database: &'a GitDatabase, revision: Oid, repo: Repository, ) -> GitCheckout<'a>

Creates an instance of GitCheckout. This doesn’t imply the checkout is done. Use GitCheckout::is_fresh to check.

  • The database is where this checkout is from.
  • The repo will be the checked out Git repository.
Source

fn remote_url(&self) -> &Url

Gets the remote repository URL.

Source

fn clone_into( into: &Path, database: &'a GitDatabase, revision: Oid, gctx: &GlobalContext, ) -> CargoResult<GitCheckout<'a>>

Clone a repo for a revision into a local path from a datatabase. This is a filesystem-to-filesystem clone.

Source

fn is_fresh(&self) -> bool

Checks if the HEAD of this checkout points to the expected revision.

Source

fn reset(&self, gctx: &GlobalContext) -> CargoResult<()>

Similar to reset(). This roughly performs git reset --hard to the revision of this checkout, with additional interrupt protection by a dummy file CHECKOUT_READY_LOCK.

If we’re interrupted while performing a git reset (e.g., we die because of a signal) Cargo needs to be sure to try to check out this repo again on the next go-round.

To enable this we have a dummy file in our checkout, .cargo-ok, which if present means that the repo has been successfully reset and is ready to go. Hence if we start to do a reset, we make sure this file doesn’t exist, and then once we’re done we create the file.

Source

fn update_submodules(&self, gctx: &GlobalContext) -> CargoResult<()>

Like git submodule update --recursive but for this git checkout.

This function respects submodule.<name>.update = none1 git config. Submodules set to none won’t be fetched.

Auto Trait Implementations§

§

impl<'a> Freeze for GitCheckout<'a>

§

impl<'a> RefUnwindSafe for GitCheckout<'a>

§

impl<'a> !Send for GitCheckout<'a>

§

impl<'a> !Sync for GitCheckout<'a>

§

impl<'a> Unpin for GitCheckout<'a>

§

impl<'a> UnwindSafe for GitCheckout<'a>

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.

§

impl<T> Instrument for T

§

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

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

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.

§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

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

Initializes a with the given initializer. Read more
§

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

Dereferences the given pointer. Read more
§

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

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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 = 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.
§

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

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 64 bytes