pub struct NewCommit { /* private fields */ }Expand description
A commit to create with Objects::write_commit.
Identities are typed Signatures, so the author and committer header
lines always have Git’s Name <email> <unix> <±HHMM> shape.
§Examples
use grit_lib::ident::Signature;
use grit_lib::objects::{NewCommit, ObjectKind, TreeEntry};
use grit_lib::repo::{InitOptions, Repository};
use time::OffsetDateTime;
let dir = tempfile::tempdir()?;
let repo = Repository::init(dir.path(), &InitOptions::new().with_bare(true))?;
let blob = repo.objects().write(ObjectKind::Blob, b"hello\n")?;
let tree = repo.objects().write_tree([TreeEntry {
mode: 0o100644,
name: b"README".to_vec(),
oid: blob,
}])?;
let when = OffsetDateTime::from_unix_timestamp(1_700_000_000).map_err(|e| {
grit_lib::error::Error::Message(e.to_string())
})?;
let ada = Signature::new("Ada Lovelace", "ada@example.com", when)?;
let commit = repo
.objects()
.write_commit(&NewCommit::new(tree, ada.clone(), ada, "Initial commit"))?;
assert_eq!(repo.objects().read_commit(&commit)?.message, "Initial commit\n");Implementations§
Source§impl NewCommit
impl NewCommit
Sourcepub fn new(
tree: ObjectId,
author: Signature,
committer: Signature,
message: impl Into<String>,
) -> Self
pub fn new( tree: ObjectId, author: Signature, committer: Signature, message: impl Into<String>, ) -> Self
A root commit of tree with no parents.
§Parameters
tree: the commit’s root tree (must exist in the repository when written).author,committer: identities and timestamps for the two header lines.message: commit message; a trailing newline is added when missing.
Sourcepub fn with_parents(self, parents: impl IntoIterator<Item = ObjectId>) -> Self
pub fn with_parents(self, parents: impl IntoIterator<Item = ObjectId>) -> Self
Replace the parent list (first parent first; each must name a commit when written).
Sourcepub fn with_change_id(self, id: ChangeId) -> Self
pub fn with_change_id(self, id: ChangeId) -> Self
Record id as the commit’s change-id header instead of assigning a fresh one.
Use this when the new commit rewrites an existing change (amend, rebase) so the
change keeps its identity. Without it, Objects::write_commit
assigns a new id when grit.changeIds is enabled (the default).
Trait Implementations§
impl Eq for NewCommit
impl StructuralPartialEq for NewCommit
Auto Trait Implementations§
impl Freeze for NewCommit
impl RefUnwindSafe for NewCommit
impl Send for NewCommit
impl Sync for NewCommit
impl Unpin for NewCommit
impl UnsafeUnpin for NewCommit
impl UnwindSafe for NewCommit
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more