mirror of
https://git.proxmox.com/git/libgit2
synced 2025-06-18 07:28:41 +00:00
Added git_commit_create_oid
This commit is contained in:
parent
1384b688d0
commit
9255039898
@ -287,6 +287,26 @@ GIT_EXTERN(int) git_commit_create_v(
|
|||||||
int parent_count,
|
int parent_count,
|
||||||
...);
|
...);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new commit in the repository, as with `git_commit_create`,
|
||||||
|
* using `git_oid` instances as parameters instead of `git_object`.
|
||||||
|
*
|
||||||
|
* See documentation for `git_commit_create` for information about the
|
||||||
|
* parameters, as the meaning is identical excepting that `tree` and
|
||||||
|
* `parents` now take `git_oid`.
|
||||||
|
*/
|
||||||
|
GIT_EXTERN(int) git_commit_create_oid(
|
||||||
|
git_oid *oid,
|
||||||
|
git_repository *repo,
|
||||||
|
const char *update_ref,
|
||||||
|
const git_signature *author,
|
||||||
|
const git_signature *committer,
|
||||||
|
const char *message_encoding,
|
||||||
|
const char *message,
|
||||||
|
const git_oid *tree,
|
||||||
|
int parent_count,
|
||||||
|
const git_oid *parents[]);
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
GIT_END_DECL
|
GIT_END_DECL
|
||||||
#endif
|
#endif
|
||||||
|
50
src/commit.c
50
src/commit.c
@ -76,7 +76,7 @@ int git_commit_create_v(
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
int git_commit_create(
|
int git_commit_create_oid(
|
||||||
git_oid *oid,
|
git_oid *oid,
|
||||||
git_repository *repo,
|
git_repository *repo,
|
||||||
const char *update_ref,
|
const char *update_ref,
|
||||||
@ -84,22 +84,18 @@ int git_commit_create(
|
|||||||
const git_signature *committer,
|
const git_signature *committer,
|
||||||
const char *message_encoding,
|
const char *message_encoding,
|
||||||
const char *message,
|
const char *message,
|
||||||
const git_tree *tree,
|
const git_oid *tree,
|
||||||
int parent_count,
|
int parent_count,
|
||||||
const git_commit *parents[])
|
const git_oid *parents[])
|
||||||
{
|
{
|
||||||
git_buf commit = GIT_BUF_INIT;
|
git_buf commit = GIT_BUF_INIT;
|
||||||
int i;
|
int i;
|
||||||
git_odb *odb;
|
git_odb *odb;
|
||||||
|
|
||||||
assert(git_object_owner((const git_object *)tree) == repo);
|
git_oid__writebuf(&commit, "tree ", tree);
|
||||||
|
|
||||||
git_oid__writebuf(&commit, "tree ", git_object_id((const git_object *)tree));
|
for (i = 0; i < parent_count; ++i)
|
||||||
|
git_oid__writebuf(&commit, "parent ", parents[i]);
|
||||||
for (i = 0; i < parent_count; ++i) {
|
|
||||||
assert(git_object_owner((const git_object *)parents[i]) == repo);
|
|
||||||
git_oid__writebuf(&commit, "parent ", git_object_id((const git_object *)parents[i]));
|
|
||||||
}
|
|
||||||
|
|
||||||
git_signature__writebuf(&commit, "author ", author);
|
git_signature__writebuf(&commit, "author ", author);
|
||||||
git_signature__writebuf(&commit, "committer ", committer);
|
git_signature__writebuf(&commit, "committer ", committer);
|
||||||
@ -131,6 +127,40 @@ on_error:
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int git_commit_create(
|
||||||
|
git_oid *oid,
|
||||||
|
git_repository *repo,
|
||||||
|
const char *update_ref,
|
||||||
|
const git_signature *author,
|
||||||
|
const git_signature *committer,
|
||||||
|
const char *message_encoding,
|
||||||
|
const char *message,
|
||||||
|
const git_tree *tree,
|
||||||
|
int parent_count,
|
||||||
|
const git_commit *parents[])
|
||||||
|
{
|
||||||
|
int retval, i;
|
||||||
|
const git_oid **parent_oids;
|
||||||
|
|
||||||
|
assert(git_object_owner((const git_object *)tree) == repo);
|
||||||
|
|
||||||
|
parent_oids = git__malloc(parent_count * sizeof(git_oid *));
|
||||||
|
GITERR_CHECK_ALLOC(parent_oids);
|
||||||
|
|
||||||
|
for (i = 0; i < parent_count; ++i) {
|
||||||
|
assert(git_object_owner((const git_object *)parents[i]) == repo);
|
||||||
|
parent_oids[i] = git_object_id((const git_object *)parents[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
retval = git_commit_create_oid(oid, repo, update_ref, author, committer,
|
||||||
|
message_encoding, message,
|
||||||
|
git_object_id((const git_object *)tree),
|
||||||
|
parent_count, parent_oids);
|
||||||
|
|
||||||
|
git__free((void *)parent_oids);
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
|
||||||
int git_commit__parse_buffer(git_commit *commit, const void *data, size_t len)
|
int git_commit__parse_buffer(git_commit *commit, const void *data, size_t len)
|
||||||
{
|
{
|
||||||
const char *buffer = data;
|
const char *buffer = data;
|
||||||
|
Loading…
Reference in New Issue
Block a user