Commit de5596bf by Ben Straub

API updates for notes.h/c.

parent 05a3ab61
...@@ -19,20 +19,39 @@ ...@@ -19,20 +19,39 @@
GIT_BEGIN_DECL GIT_BEGIN_DECL
/** /**
* Basic components of a note
*
* - Oid of the blob containing the message
* - Oid of the git object being annotated
*/
typedef struct {
git_oid blob_oid;
git_oid annotated_object_oid;
} git_note_data;
/**
* Callback for git_note_foreach.
*/
typedef int (*git_note_foreach_cb)(git_note_data *note_data, void *payload);
/**
* Read the note for an object * Read the note for an object
* *
* The note must be freed manually by the user. * The note must be freed manually by the user.
* *
* @param note pointer to the read note; NULL in case of error * @param out pointer to the read note; NULL in case of error
* @param repo repository where to look up the note * @param repo repository where to look up the note
* @param notes_ref canonical name of the reference to use (optional); * @param notes_ref canonical name of the reference to use (optional); defaults to
* defaults to "refs/notes/commits" * "refs/notes/commits"
* @param oid OID of the git object to read the note from * @param oid OID of the git object to read the note from
* *
* @return 0 or an error code * @return 0 or an error code
*/ */
GIT_EXTERN(int) git_note_read(git_note **note, git_repository *repo, GIT_EXTERN(int) git_note_read(
const char *notes_ref, const git_oid *oid); git_note **out,
git_repository *repo,
const char *notes_ref,
const git_oid *oid);
/** /**
* Get the note message * Get the note message
...@@ -40,7 +59,7 @@ GIT_EXTERN(int) git_note_read(git_note **note, git_repository *repo, ...@@ -40,7 +59,7 @@ GIT_EXTERN(int) git_note_read(git_note **note, git_repository *repo,
* @param note * @param note
* @return the note message * @return the note message
*/ */
GIT_EXTERN(const char *) git_note_message(git_note *note); GIT_EXTERN(const char *) git_note_message(const git_note *note);
/** /**
...@@ -49,7 +68,7 @@ GIT_EXTERN(const char *) git_note_message(git_note *note); ...@@ -49,7 +68,7 @@ GIT_EXTERN(const char *) git_note_message(git_note *note);
* @param note * @param note
* @return the note object OID * @return the note object OID
*/ */
GIT_EXTERN(const git_oid *) git_note_oid(git_note *note); GIT_EXTERN(const git_oid *) git_note_oid(const git_note *note);
/** /**
* Add a note for an object * Add a note for an object
...@@ -65,10 +84,14 @@ GIT_EXTERN(const git_oid *) git_note_oid(git_note *note); ...@@ -65,10 +84,14 @@ GIT_EXTERN(const git_oid *) git_note_oid(git_note *note);
* *
* @return 0 or an error code * @return 0 or an error code
*/ */
GIT_EXTERN(int) git_note_create(git_oid *out, git_repository *repo, GIT_EXTERN(int) git_note_create(
git_signature *author, git_signature *committer, git_oid *out,
const char *notes_ref, const git_oid *oid, git_repository *repo,
const char *note); const git_signature *author,
const git_signature *committer,
const char *notes_ref,
const git_oid *oid,
const char *note);
/** /**
...@@ -83,9 +106,12 @@ GIT_EXTERN(int) git_note_create(git_oid *out, git_repository *repo, ...@@ -83,9 +106,12 @@ GIT_EXTERN(int) git_note_create(git_oid *out, git_repository *repo,
* *
* @return 0 or an error code * @return 0 or an error code
*/ */
GIT_EXTERN(int) git_note_remove(git_repository *repo, const char *notes_ref, GIT_EXTERN(int) git_note_remove(
git_signature *author, git_signature *committer, git_repository *repo,
const git_oid *oid); const char *notes_ref,
const git_signature *author,
const git_signature *committer,
const git_oid *oid);
/** /**
* Free a git_note object * Free a git_note object
...@@ -105,17 +131,6 @@ GIT_EXTERN(void) git_note_free(git_note *note); ...@@ -105,17 +131,6 @@ GIT_EXTERN(void) git_note_free(git_note *note);
GIT_EXTERN(int) git_note_default_ref(const char **out, git_repository *repo); GIT_EXTERN(int) git_note_default_ref(const char **out, git_repository *repo);
/** /**
* Basic components of a note
*
* - Oid of the blob containing the message
* - Oid of the git object being annotated
*/
typedef struct {
git_oid blob_oid;
git_oid annotated_object_oid;
} git_note_data;
/**
* Loop over all the notes within a specified namespace * Loop over all the notes within a specified namespace
* and issue a callback for each one. * and issue a callback for each one.
* *
...@@ -134,7 +149,7 @@ typedef struct { ...@@ -134,7 +149,7 @@ typedef struct {
GIT_EXTERN(int) git_note_foreach( GIT_EXTERN(int) git_note_foreach(
git_repository *repo, git_repository *repo,
const char *notes_ref, const char *notes_ref,
int (*note_cb)(git_note_data *note_data, void *payload), git_note_foreach_cb note_cb,
void *payload void *payload
); );
......
...@@ -263,8 +263,8 @@ static int insert_note_in_tree_enotfound_cb(git_tree **out, ...@@ -263,8 +263,8 @@ static int insert_note_in_tree_enotfound_cb(git_tree **out,
static int note_write(git_oid *out, static int note_write(git_oid *out,
git_repository *repo, git_repository *repo,
git_signature *author, const git_signature *author,
git_signature *committer, const git_signature *committer,
const char *notes_ref, const char *notes_ref,
const char *note, const char *note,
git_tree *commit_tree, git_tree *commit_tree,
...@@ -343,9 +343,9 @@ cleanup: ...@@ -343,9 +343,9 @@ cleanup:
} }
static int note_remove(git_repository *repo, static int note_remove(git_repository *repo,
git_signature *author, git_signature *committer, const git_signature *author, const git_signature *committer,
const char *notes_ref, git_tree *tree, const char *notes_ref, git_tree *tree,
const char *target, git_commit **parents) const char *target, git_commit **parents)
{ {
int error; int error;
git_tree *tree_after_removal = NULL; git_tree *tree_after_removal = NULL;
...@@ -442,9 +442,12 @@ cleanup: ...@@ -442,9 +442,12 @@ cleanup:
} }
int git_note_create( int git_note_create(
git_oid *out, git_repository *repo, git_oid *out,
git_signature *author, git_signature *committer, git_repository *repo,
const char *notes_ref, const git_oid *oid, const git_signature *author,
const git_signature *committer,
const char *notes_ref,
const git_oid *oid,
const char *note) const char *note)
{ {
int error; int error;
...@@ -461,7 +464,7 @@ int git_note_create( ...@@ -461,7 +464,7 @@ int git_note_create(
goto cleanup; goto cleanup;
error = note_write(out, repo, author, committer, notes_ref, error = note_write(out, repo, author, committer, notes_ref,
note, tree, target, &commit); note, tree, target, &commit);
cleanup: cleanup:
git__free(target); git__free(target);
...@@ -471,8 +474,8 @@ cleanup: ...@@ -471,8 +474,8 @@ cleanup:
} }
int git_note_remove(git_repository *repo, const char *notes_ref, int git_note_remove(git_repository *repo, const char *notes_ref,
git_signature *author, git_signature *committer, const git_signature *author, const git_signature *committer,
const git_oid *oid) const git_oid *oid)
{ {
int error; int error;
char *target = NULL; char *target = NULL;
...@@ -501,13 +504,13 @@ int git_note_default_ref(const char **out, git_repository *repo) ...@@ -501,13 +504,13 @@ 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 char * git_note_message(git_note *note) const char * git_note_message(const git_note *note)
{ {
assert(note); assert(note);
return note->message; return note->message;
} }
const git_oid * git_note_oid(git_note *note) const git_oid * git_note_oid(const git_note *note)
{ {
assert(note); assert(note);
return &note->oid; return &note->oid;
...@@ -525,7 +528,7 @@ void git_note_free(git_note *note) ...@@ -525,7 +528,7 @@ void git_note_free(git_note *note)
static int process_entry_path( static int process_entry_path(
const char* entry_path, const char* entry_path,
const git_oid *note_oid, const git_oid *note_oid,
int (*note_cb)(git_note_data *note_data, void *payload), git_note_foreach_cb note_cb,
void *payload) void *payload)
{ {
int error = -1; int error = -1;
...@@ -581,7 +584,7 @@ cleanup: ...@@ -581,7 +584,7 @@ cleanup:
int git_note_foreach( int git_note_foreach(
git_repository *repo, git_repository *repo,
const char *notes_ref, const char *notes_ref,
int (*note_cb)(git_note_data *note_data, void *payload), git_note_foreach_cb note_cb,
void *payload) void *payload)
{ {
int error; int error;
......
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