diff options
| author | Vicent Marti <tanoku@gmail.com> | 2010-07-07 14:56:05 +0200 | 
|---|---|---|
| committer | Vicent Marti <tanoku@gmail.com> | 2010-07-15 23:40:52 +0200 | 
| commit | 52f2390b4308fe51ecceecbc35a87bf6e74e9aa8 (patch) | |
| tree | 15595ebcc29767ee05eb33adb216fc2e92af85f4 /src/git/commit.h | |
| parent | 225fe21522a98075bdc18dae90ce459f797ac366 (diff) | |
| download | libgit2-52f2390b4308fe51ecceecbc35a87bf6e74e9aa8.tar.gz | |
Add external API to access detailed commit attributes
The following new external methods have been added:
GIT_EXTERN(const char *) git_commit_message_short(git_commit *commit);
GIT_EXTERN(const char *) git_commit_message(git_commit *commit);
GIT_EXTERN(time_t) git_commit_time(git_commit *commit);
GIT_EXTERN(const git_commit_person *) git_commit_committer(git_commit *commit);
GIT_EXTERN(const git_commit_person *) git_commit_author(git_commit *commit);
GIT_EXTERN(const git_tree *) git_commit_tree(git_commit *commit);
A new structure, git_commit_person has been added to represent a
commit's author or committer.
The parsing of a commit has been split in two phases.
When adding a commit to the revision pool:
	- the commit's ODB object is opened
	- its raw contents are parsed for commit TIME, PARENTS and TREE
		(the minimal amount of data required to traverse the pool)
	- the commit's ODB object is closed
When querying for extended information on a commit:
	- the commit's ODB object is reopened
	- its raw contents are parsed for the requested information
	- the commit's ODB object remains open to handle additional queries
New unit tests have been added for the new functionality:
	In t0401-parse: parse_person_test
	In t0402-details: query_details_test
Signed-off-by: Vicent Marti <tanoku@gmail.com>
Diffstat (limited to 'src/git/commit.h')
| -rw-r--r-- | src/git/commit.h | 52 | 
1 files changed, 51 insertions, 1 deletions
| diff --git a/src/git/commit.h b/src/git/commit.h index 0ccf3c246..6d34f01ce 100644 --- a/src/git/commit.h +++ b/src/git/commit.h @@ -3,6 +3,7 @@  #include "common.h"  #include "oid.h" +#include "tree.h"  /**   * @file git/commit.h @@ -16,6 +17,13 @@ GIT_BEGIN_DECL  /** Parsed representation of a commit object. */  typedef struct git_commit git_commit; +/** Parsed representation of an author/committer of a commit */ +typedef struct git_commit_person { +	char name[64]; /**< Full name */ +	char email[64]; /**< Email address */ +	time_t time; /**< Time when this person commited the change */ +} git_commit_person; +  /**   * Locate a reference to a commit without loading it.   * The generated commit object is owned by the revision @@ -45,11 +53,53 @@ GIT_EXTERN(git_commit *) git_commit_parse(git_revpool *pool, const git_oid *id);  /**   * Get the id of a commit. - * @param commit a previously parsed commit. + * @param commit a previously loaded commit.   * @return object identity for the commit.   */  GIT_EXTERN(const git_oid *) git_commit_id(git_commit *commit); +/** + * Get the short (one line) message of a commit. + * @param commit a previously loaded commit. + * @return the short message of a commit + */ +GIT_EXTERN(const char *) git_commit_message_short(git_commit *commit); + +/** + * Get the full message of a commit. + * @param commit a previously loaded commit. + * @return the message of a commit + */ +GIT_EXTERN(const char *) git_commit_message(git_commit *commit); + +/** + * Get the commit time (i.e. committer time) of a commit. + * @param commit a previously loaded commit. + * @return the time of a commit + */ +GIT_EXTERN(time_t) git_commit_time(git_commit *commit); + +/** + * Get the committer of a commit. + * @param commit a previously loaded commit. + * @return the committer of a commit + */ +GIT_EXTERN(const git_commit_person *) git_commit_committer(git_commit *commit); + +/** + * Get the author of a commit. + * @param commit a previously loaded commit. + * @return the author of a commit + */ +GIT_EXTERN(const git_commit_person *) git_commit_author(git_commit *commit); + +/** + * Get the tree pointed to by a commit. + * @param commit a previously loaded commit. + * @return the tree of a commit + */ +GIT_EXTERN(const git_tree *) git_commit_tree(git_commit *commit); +  /** @} */  GIT_END_DECL  #endif | 
