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 comitting is not atomic: if an operation fails, the
transaction aborts, but previous successful operations are not rolled back.
Implementations
sourceimpl<'repo> Transaction<'repo>
impl<'repo> Transaction<'repo>
sourcepub fn lock_ref(&mut self, refname: &str) -> Result<(), Error>
pub fn lock_ref(&mut self, refname: &str) -> Result<(), Error>
Lock the specified reference by name.
sourcepub fn set_target(
&mut self,
refname: &str,
target: Oid,
reflog_signature: Option<&Signature<'_>>,
reflog_message: &str
) -> Result<(), Error>
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.
sourcepub fn set_symbolic_target(
&mut self,
refname: &str,
target: &str,
reflog_signature: Option<&Signature<'_>>,
reflog_message: &str
) -> Result<(), Error>
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.
sourcepub fn set_reflog(&mut self, refname: &str, reflog: Reflog) -> Result<(), Error>
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 atomicty is *not guaranteed: if the transaction fails to
modify refname
, the reflog may still have been comitted to disk.
If this is combined with setting the target, that update won’t be
written to the log (ie. the reflog_signature
and reflog_message
parameters will be ignored).
Trait Implementations
Auto Trait Implementations
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
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more