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