mirror of
https://github.com/SkinnyMind/libgit2dart.git
synced 2025-05-04 20:29:08 -04:00
feat(repository): add alias for commit creation
This commit is contained in:
parent
7187d890d6
commit
10b9864219
4 changed files with 44 additions and 9 deletions
|
@ -73,19 +73,21 @@ void annotatedFree(Pointer<git_annotated_commit> commit) {
|
|||
/// Throws a [LibGit2Error] if error occured.
|
||||
Pointer<git_oid> create(
|
||||
Pointer<git_repository> repo,
|
||||
String? updateRef,
|
||||
String updateRef,
|
||||
Pointer<git_signature> author,
|
||||
Pointer<git_signature> committer,
|
||||
String? messageEncoding,
|
||||
String messageEncoding,
|
||||
String message,
|
||||
Pointer<git_tree> tree,
|
||||
int parentCount,
|
||||
List<String> parents,
|
||||
) {
|
||||
final out = calloc<git_oid>();
|
||||
final updateRefC = updateRef?.toNativeUtf8().cast<Int8>() ?? nullptr;
|
||||
final messageEncodingC =
|
||||
messageEncoding?.toNativeUtf8().cast<Int8>() ?? nullptr;
|
||||
final updateRefC =
|
||||
updateRef.isEmpty ? nullptr : updateRef.toNativeUtf8().cast<Int8>();
|
||||
final messageEncodingC = messageEncoding.isEmpty
|
||||
? nullptr
|
||||
: messageEncoding.toNativeUtf8().cast<Int8>();
|
||||
final messageC = message.toNativeUtf8().cast<Int8>();
|
||||
Pointer<Pointer<git_commit>> parentsC =
|
||||
calloc.call<Pointer<git_commit>>(parentCount);
|
||||
|
|
|
@ -33,6 +33,12 @@ class Commit {
|
|||
|
||||
/// Creates new commit in the repository.
|
||||
///
|
||||
/// [updateRef] is name of the reference that will be updated to point to this commit.
|
||||
/// If the reference is not direct, it will be resolved to a direct reference. Use "HEAD"
|
||||
/// to update the HEAD of the current branch and make it point to this commit. If the
|
||||
/// reference doesn't exist yet, it will be created. If it does exist, the first parent
|
||||
/// must be the tip of this branch.
|
||||
///
|
||||
/// Throws a [LibGit2Error] if error occured.
|
||||
static Oid create({
|
||||
required Repository repo,
|
||||
|
@ -41,8 +47,8 @@ class Commit {
|
|||
required Signature commiter,
|
||||
required String treeSHA,
|
||||
required List<String> parents,
|
||||
String? updateRef,
|
||||
String? messageEncoding,
|
||||
String updateRef = '',
|
||||
String messageEncoding = '',
|
||||
}) {
|
||||
final tree = Tree.lookup(repo, treeSHA);
|
||||
|
||||
|
|
|
@ -394,6 +394,34 @@ class Repository {
|
|||
/// Throws a [LibGit2Error] if error occured.
|
||||
Commit revParseSingle(String spec) => RevParse.single(this, spec);
|
||||
|
||||
/// Creates new commit in the repository.
|
||||
///
|
||||
/// [updateRef] is name of the reference that will be updated to point to this commit.
|
||||
/// If the reference is not direct, it will be resolved to a direct reference. Use "HEAD"
|
||||
/// to update the HEAD of the current branch and make it point to this commit. If the
|
||||
/// reference doesn't exist yet, it will be created. If it does exist, the first parent
|
||||
/// must be the tip of this branch.
|
||||
///
|
||||
/// Throws a [LibGit2Error] if error occured.
|
||||
Oid createCommit({
|
||||
required String message,
|
||||
required Signature author,
|
||||
required Signature commiter,
|
||||
required String treeSHA,
|
||||
required List<String> parents,
|
||||
String updateRef = '',
|
||||
String messageEncoding = '',
|
||||
}) {
|
||||
return Commit.create(
|
||||
repo: this,
|
||||
message: message,
|
||||
author: author,
|
||||
commiter: commiter,
|
||||
treeSHA: treeSHA,
|
||||
parents: parents,
|
||||
);
|
||||
}
|
||||
|
||||
/// Finds a single object and intermediate reference (if there is one) by a [spec] revision string.
|
||||
///
|
||||
/// See `man gitrevisions`, or https://git-scm.com/docs/git-rev-parse.html#_specifying_revisions
|
||||
|
|
|
@ -97,8 +97,7 @@ void main() {
|
|||
});
|
||||
|
||||
test('successfully creates commit without parents', () {
|
||||
final oid = Commit.create(
|
||||
repo: repo,
|
||||
final oid = repo.createCommit(
|
||||
message: message,
|
||||
author: author,
|
||||
commiter: commiter,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue