diff options
author | Vicent Marti <tanoku@gmail.com> | 2010-08-08 14:12:17 +0200 |
---|---|---|
committer | Vicent Marti <tanoku@gmail.com> | 2010-08-12 18:48:55 +0200 |
commit | 3315782cb4f2b683c66a53c93aa81de501c5a4ab (patch) | |
tree | e3fa8b56dc17b749cc53520eb350cbcc46101007 /src/git/revwalk.h | |
parent | f8758044876b30b0f6482d1fe8c3b1de743f4186 (diff) | |
download | libgit2-3315782cb4f2b683c66a53c93aa81de501c5a4ab.tar.gz |
Redesigned the walking/object lookup interface
The old 'git_revpool' object has been removed and
split into two distinct objects with separate
functionality, in order to have separate methods for
object management and object walking.
* A new object 'git_repository' does the high-level
management of a repository's objects (commits, trees,
tags, etc) on top of a 'git_odb'.
Eventually, it will also manage other repository
attributes (e.g. tag resolution, references, etc).
See: src/git/repository.h
* A new external method
'git_repository_lookup(repo, oid, type)'
has been added to the 'git_repository' API.
All object lookups (git_XXX_lookup()) are now
wrappers to this method, and duplicated code
has been removed. The method does automatic type
checking and returns a generic 'git_revpool_object'
that can be cast to any specific object.
See: src/git/repository.h
* The external methods for object parsing of repository
objects (git_XXX_parse()) have been removed.
Loading objects from the repository is now managed
through the 'lookup' functions. These objects are
loaded with minimal information, and the relevant
parsing is done automatically when the user requests
any of the parsed attributes through accessor methods.
An attribute has been added to 'git_repository' in
order to force the parsing of all the repository objects
immediately after lookup.
See: src/git/commit.h
See: src/git/tag.h
See: src/git/tree.h
* The previous walking functionality of the revpool
is now found in 'git_revwalk', which does the actual
revision walking on a repository; the attributes
when walking through commits in a database have been
decoupled from the actual commit objects.
This increases performance when accessing commits
during the walk and allows to have several
'git_revwalk' instances working at the same time on
top of the same repository, without having to load
commits in memory several times.
See: src/git/revwalk.h
* The old 'git_revpool_table' has been renamed to
'git_hashtable' and now works as a generic hashtable
with support for any kind of object and custom hash
functions.
See: src/hashtable.h
* All the relevant unit tests have been updated, renamed
and grouped accordingly.
Signed-off-by: Vicent Marti <tanoku@gmail.com>
Diffstat (limited to 'src/git/revwalk.h')
-rw-r--r-- | src/git/revwalk.h | 66 |
1 files changed, 33 insertions, 33 deletions
diff --git a/src/git/revwalk.h b/src/git/revwalk.h index 7aa92d44a..842503dea 100644 --- a/src/git/revwalk.h +++ b/src/git/revwalk.h @@ -15,87 +15,87 @@ GIT_BEGIN_DECL /** - * Sort the revpool contents in no particular ordering; + * Sort the repository contents in no particular ordering; * this sorting is arbritary, implementation-specific * and subject to change at any time. - * This is the default sorting for new revision pools. + * This is the default sorting for new walkers. */ -#define GIT_RPSORT_NONE (0) +#define GIT_SORT_NONE (0) /** - * Sort the revpool contents in topological order + * Sort the repository contents in topological order * (parents before children); this sorting mode * can be combined with time sorting. */ -#define GIT_RPSORT_TOPOLOGICAL (1 << 0) +#define GIT_SORT_TOPOLOGICAL (1 << 0) /** - * Sort the revpool contents by commit time; + * Sort the repository contents by commit time; * this sorting mode can be combined with * topological sorting. */ -#define GIT_RPSORT_TIME (1 << 1) +#define GIT_SORT_TIME (1 << 1) /** - * Iterate through the revpool contents in reverse + * Iterate through the repository contents in reverse * order; this sorting mode can be combined with * any of the above. */ -#define GIT_RPSORT_REVERSE (1 << 2) +#define GIT_SORT_REVERSE (1 << 2) + +typedef struct git_revwalk git_revwalk; /** - * Allocate a new revision traversal pool. - * - * The configuration is copied during allocation. Changes - * to the configuration after allocation do not affect the pool - * returned by this function. Callers may safely free the - * passed configuration after the function completes. + * Allocate a new revision walker to iterate through a repo. * - * @param db the database objects are read from. - * @return the new traversal handle; NULL if memory is exhausted. + * @param repo the repo to walk through + * @return the new walker handle; NULL if memory is exhausted. */ -GIT_EXTERN(git_revpool *) gitrp_alloc(git_odb *db); +GIT_EXTERN(git_revwalk *) git_revwalk_alloc(git_repository *repo); /** - * Reset the traversal machinary for reuse. - * @param pool traversal handle to reset. + * Reset the walking machinary for reuse. + * @param walker handle to reset. */ -GIT_EXTERN(void) gitrp_reset(git_revpool *pool); +GIT_EXTERN(void) git_revwalk_reset(git_revwalk *walker); /** - * Mark an object to start traversal from. - * @param pool the pool being used for the traversal. + * Mark a commit to start traversal from. + * The commit object must belong to the repo which is being walked through. + * + * @param walker the walker being used for the traversal. * @param commit the commit to start from. */ -GIT_EXTERN(int) gitrp_push(git_revpool *pool, git_commit *commit); +GIT_EXTERN(int) git_revwalk_push(git_revwalk *walk, git_commit *commit); /** * Mark a commit (and its ancestors) uninteresting for the output. - * @param pool the pool being used for the traversal. + * @param walker the walker being used for the traversal. * @param commit the commit that will be ignored during the traversal */ -GIT_EXTERN(int) gitrp_hide(git_revpool *pool, git_commit *commit); +GIT_EXTERN(int) git_revwalk_hide(git_revwalk *walk, git_commit *commit); /** * Get the next commit from the revision traversal. - * @param pool the pool to pop the commit from. + * @param walk the walker to pop the commit from. * @return next commit; NULL if there is no more output. */ -GIT_EXTERN(git_commit *) gitrp_next(git_revpool *pool); +GIT_EXTERN(git_commit *) git_revwalk_next(git_revwalk *walk); /** * Change the sorting mode when iterating through the - * revision pool's contents. - * @param pool the pool being used for the traversal. + * repository's contents. + * Changing the sorting mode resets the walker. + * @param walk the walker being used for the traversal. * @param sort_mode combination of GIT_RPSORT_XXX flags */ -GIT_EXTERN(void) gitrp_sorting(git_revpool *pool, unsigned int sort_mode); +GIT_EXTERN(void) git_revwalk_sorting(git_revwalk *walk, unsigned int sort_mode); /** * Free a revwalk previously allocated. - * @param pool traversal handle to close. If NULL nothing occurs. + * @param walk traversal handle to close. If NULL nothing occurs. */ -GIT_EXTERN(void) gitrp_free(git_revpool *pool); +GIT_EXTERN(void) git_revwalk_free(git_revwalk *walk); /** @} */ GIT_END_DECL |