Struct git2::Transaction

source ·
pub struct Transaction<'repo> { /* private fields */ }
Expand description

A structure representing a transactional update of a repository’s references.

Transactions work by locking loose refs for as long as the Transaction is held, and committing all changes to disk when Transaction::commit is called. Note that committing is not atomic: if an operation fails, the transaction aborts, but previous successful operations are not rolled back.

Implementations§

source§

impl<'repo> Transaction<'repo>

source

pub fn lock_ref(&mut self, refname: &str) -> Result<(), Error>

Lock the specified reference by name.

source

pub fn set_target( &mut self, refname: &str, target: Oid, reflog_signature: Option<&Signature<'_>>, reflog_message: &str ) -> Result<(), Error>

Set the target of the specified reference.

The reference must have been locked via lock_ref.

If reflog_signature is None, the Signature is read from the repository config.

source

pub fn set_symbolic_target( &mut self, refname: &str, target: &str, reflog_signature: Option<&Signature<'_>>, reflog_message: &str ) -> Result<(), Error>

Set the target of the specified symbolic reference.

The reference must have been locked via lock_ref.

If reflog_signature is None, the Signature is read from the repository config.

source

pub fn set_reflog(&mut self, refname: &str, reflog: Reflog) -> Result<(), Error>

Add a Reflog to the transaction.

This commit the in-memory Reflog to disk when the transaction commits. Note that atomicity is *not guaranteed: if the transaction fails to modify refname, the reflog may still have been committed to disk.

If this is combined with setting the target, that update won’t be written to the log (i.e. the reflog_signature and reflog_message parameters will be ignored).

source

pub fn remove(&mut self, refname: &str) -> Result<(), Error>

Remove a reference.

The reference must have been locked via lock_ref.

source

pub fn commit(self) -> Result<(), Error>

Commit the changes from the transaction.

The updates will be made one by one, and the first failure will stop the processing.

Trait Implementations§

source§

impl Drop for Transaction<'_>

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl<'repo> Freeze for Transaction<'repo>

§

impl<'repo> RefUnwindSafe for Transaction<'repo>

§

impl<'repo> !Send for Transaction<'repo>

§

impl<'repo> !Sync for Transaction<'repo>

§

impl<'repo> Unpin for Transaction<'repo>

§

impl<'repo> UnwindSafe for Transaction<'repo>

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, 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, U> TryFrom<U> for T
where U: Into<T>,

§

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

§

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.