diff options
author | Edward Thomson <ethomson@edwardthomson.com> | 2014-07-21 10:47:01 -0400 |
---|---|---|
committer | Edward Thomson <ethomson@microsoft.com> | 2014-10-26 22:59:29 -0400 |
commit | bad4937ea50a8874598171c7ccb3d3443f1daf7b (patch) | |
tree | fddf82c84fd56243ddf1678b4394eddc05651c09 | |
parent | a612a25fa673447e874407fd2d9501998885d392 (diff) | |
download | libgit2-bad4937ea50a8874598171c7ccb3d3443f1daf7b.tar.gz |
Introduce `git_note_author`, `git_note_committer`
-rw-r--r-- | include/git2/notes.h | 17 | ||||
-rw-r--r-- | src/notes.c | 35 | ||||
-rw-r--r-- | src/notes.h | 3 |
3 files changed, 51 insertions, 4 deletions
diff --git a/include/git2/notes.h b/include/git2/notes.h index 98eb2aef3..1a7794a5c 100644 --- a/include/git2/notes.h +++ b/include/git2/notes.h @@ -97,6 +97,23 @@ GIT_EXTERN(int) git_note_read( const git_oid *oid); /** + * Get the note author + * + * @param note the note + * @return the author + */ +GIT_EXTERN(const git_signature *) git_note_author(const git_note *note); + +/** + * Get the note committer + * + * @param note the note + * @return the committer + */ +GIT_EXTERN(const git_signature *) git_note_committer(const git_note *note); + + +/** * Get the note message * * @param note the note diff --git a/src/notes.c b/src/notes.c index ffe5d345a..046a91614 100644 --- a/src/notes.c +++ b/src/notes.c @@ -306,7 +306,11 @@ cleanup: return error; } -static int note_new(git_note **out, git_oid *note_oid, git_blob *blob) +static int note_new( + git_note **out, + git_oid *note_oid, + git_commit *commit, + git_blob *blob) { git_note *note = NULL; @@ -314,6 +318,11 @@ static int note_new(git_note **out, git_oid *note_oid, git_blob *blob) GITERR_CHECK_ALLOC(note); git_oid_cpy(¬e->id, note_oid); + + if (git_signature_dup(¬e->author, git_commit_author(commit)) < 0 || + git_signature_dup(¬e->committer, git_commit_committer(commit)) < 0) + return -1; + note->message = git__strdup((char *)git_blob_rawcontent(blob)); GITERR_CHECK_ALLOC(note->message); @@ -323,7 +332,11 @@ static int note_new(git_note **out, git_oid *note_oid, git_blob *blob) } static int note_lookup( - git_note **out, git_repository *repo, git_tree *tree, const char *target) + git_note **out, + git_repository *repo, + git_commit *commit, + git_tree *tree, + const char *target) { int error, fanout = 0; git_oid oid; @@ -340,7 +353,7 @@ static int note_lookup( if ((error = git_blob_lookup(&blob, repo, &oid)) < 0) goto cleanup; - if ((error = note_new(¬e, &oid, blob)) < 0) + if ((error = note_new(¬e, &oid, commit, blob)) < 0) goto cleanup; *out = note; @@ -432,7 +445,7 @@ int git_note_read(git_note **out, git_repository *repo, if (!(error = retrieve_note_tree_and_commit( &tree, &commit, repo, ¬es_ref))) - error = note_lookup(out, repo, tree, target); + error = note_lookup(out, repo, commit, tree, target); git__free(target); git_tree_free(tree); @@ -502,6 +515,18 @@ int git_note_default_ref(const char **out, git_repository *repo) return note_get_default_ref(out, repo); } +const git_signature *git_note_committer(const git_note *note) +{ + assert(note); + return note->committer; +} + +const git_signature *git_note_author(const git_note *note) +{ + assert(note); + return note->author; +} + const char * git_note_message(const git_note *note) { assert(note); @@ -519,6 +544,8 @@ void git_note_free(git_note *note) if (note == NULL) return; + git_signature_free(note->committer); + git_signature_free(note->author); git__free(note->message); git__free(note); } diff --git a/src/notes.h b/src/notes.h index e9cfa00fa..cfc0ca239 100644 --- a/src/notes.h +++ b/src/notes.h @@ -23,6 +23,9 @@ struct git_note { git_oid id; + git_signature *author; + git_signature *committer; + char *message; }; |