diff options
author | Xavier L <xavier.l@afrosoft.ca> | 2013-04-23 12:22:29 -0400 |
---|---|---|
committer | Xavier L <xavier.l@afrosoft.ca> | 2013-04-23 12:22:29 -0400 |
commit | f0e37a8b863c2e6caba2b15e4d723bddfe74b46c (patch) | |
tree | 6c9f2fbb91205fd0ddf3e59a111c2d1ed8f0a388 | |
parent | 6c1b6b7abcef75d421e4d59c397eff54cc1f28aa (diff) | |
download | libgit2-f0e37a8b863c2e6caba2b15e4d723bddfe74b46c.tar.gz |
Added function to insert commit into pack
-rw-r--r-- | include/git2/pack.h | 12 | ||||
-rw-r--r-- | src/pack-objects.c | 15 |
2 files changed, 27 insertions, 0 deletions
diff --git a/include/git2/pack.h b/include/git2/pack.h index 2f033bef6..118b8d554 100644 --- a/include/git2/pack.h +++ b/include/git2/pack.h @@ -95,6 +95,18 @@ GIT_EXTERN(int) git_packbuilder_insert(git_packbuilder *pb, const git_oid *id, c GIT_EXTERN(int) git_packbuilder_insert_tree(git_packbuilder *pb, const git_oid *id); /** + * Insert a commit object + * + * This will add a commit as well as the completed referenced tree. + * + * @param pb The packbuilder + * @param id The oid of the commit + * + * @return 0 or an error code + */ +GIT_EXTERN(int) git_packbuilder_insert_commit(git_packbuilder *pb, const git_oid *id); + +/** * Write the new pack and the corresponding index to path * * @param pb The packbuilder diff --git a/src/pack-objects.c b/src/pack-objects.c index 459201f58..56240125b 100644 --- a/src/pack-objects.c +++ b/src/pack-objects.c @@ -1284,6 +1284,21 @@ static int cb_tree_walk(const char *root, const git_tree_entry *entry, void *pay git_buf_cstr(&ctx->buf)); } +int git_packbuilder_insert_commit(git_packbuilder *pb, const git_oid *oid) +{ +git_commit *commit; + +if (git_commit_lookup(&commit, pb->repo, oid) < 0 || +git_packbuilder_insert(pb, oid, NULL) < 0) +return -1; + +if (git_packbuilder_insert_tree(pb, git_commit_tree_id(commit)) < 0) +return -1; + +git_commit_free(commit); +return 0; +} + int git_packbuilder_insert_tree(git_packbuilder *pb, const git_oid *oid) { git_tree *tree; |