Commit bad4937e by Edward Thomson Committed by Edward Thomson

Introduce `git_note_author`, `git_note_committer`

parent a612a25f
...@@ -97,6 +97,23 @@ GIT_EXTERN(int) git_note_read( ...@@ -97,6 +97,23 @@ GIT_EXTERN(int) git_note_read(
const git_oid *oid); 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 * Get the note message
* *
* @param note the note * @param note the note
......
...@@ -306,7 +306,11 @@ cleanup: ...@@ -306,7 +306,11 @@ cleanup:
return error; 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; git_note *note = NULL;
...@@ -314,6 +318,11 @@ static int note_new(git_note **out, git_oid *note_oid, git_blob *blob) ...@@ -314,6 +318,11 @@ static int note_new(git_note **out, git_oid *note_oid, git_blob *blob)
GITERR_CHECK_ALLOC(note); GITERR_CHECK_ALLOC(note);
git_oid_cpy(&note->id, note_oid); git_oid_cpy(&note->id, note_oid);
if (git_signature_dup(&note->author, git_commit_author(commit)) < 0 ||
git_signature_dup(&note->committer, git_commit_committer(commit)) < 0)
return -1;
note->message = git__strdup((char *)git_blob_rawcontent(blob)); note->message = git__strdup((char *)git_blob_rawcontent(blob));
GITERR_CHECK_ALLOC(note->message); GITERR_CHECK_ALLOC(note->message);
...@@ -323,7 +332,11 @@ static int note_new(git_note **out, git_oid *note_oid, git_blob *blob) ...@@ -323,7 +332,11 @@ static int note_new(git_note **out, git_oid *note_oid, git_blob *blob)
} }
static int note_lookup( 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; int error, fanout = 0;
git_oid oid; git_oid oid;
...@@ -340,7 +353,7 @@ static int note_lookup( ...@@ -340,7 +353,7 @@ static int note_lookup(
if ((error = git_blob_lookup(&blob, repo, &oid)) < 0) if ((error = git_blob_lookup(&blob, repo, &oid)) < 0)
goto cleanup; goto cleanup;
if ((error = note_new(&note, &oid, blob)) < 0) if ((error = note_new(&note, &oid, commit, blob)) < 0)
goto cleanup; goto cleanup;
*out = note; *out = note;
...@@ -432,7 +445,7 @@ int git_note_read(git_note **out, git_repository *repo, ...@@ -432,7 +445,7 @@ int git_note_read(git_note **out, git_repository *repo,
if (!(error = retrieve_note_tree_and_commit( if (!(error = retrieve_note_tree_and_commit(
&tree, &commit, repo, &notes_ref))) &tree, &commit, repo, &notes_ref)))
error = note_lookup(out, repo, tree, target); error = note_lookup(out, repo, commit, tree, target);
git__free(target); git__free(target);
git_tree_free(tree); git_tree_free(tree);
...@@ -502,6 +515,18 @@ int git_note_default_ref(const char **out, git_repository *repo) ...@@ -502,6 +515,18 @@ int git_note_default_ref(const char **out, git_repository *repo)
return note_get_default_ref(out, 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) const char * git_note_message(const git_note *note)
{ {
assert(note); assert(note);
...@@ -519,6 +544,8 @@ void git_note_free(git_note *note) ...@@ -519,6 +544,8 @@ void git_note_free(git_note *note)
if (note == NULL) if (note == NULL)
return; return;
git_signature_free(note->committer);
git_signature_free(note->author);
git__free(note->message); git__free(note->message);
git__free(note); git__free(note);
} }
......
...@@ -23,6 +23,9 @@ ...@@ -23,6 +23,9 @@
struct git_note { struct git_note {
git_oid id; git_oid id;
git_signature *author;
git_signature *committer;
char *message; char *message;
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment