diff options
author | Russell Belfer <rb@github.com> | 2012-08-27 11:53:59 -0700 |
---|---|---|
committer | Russell Belfer <rb@github.com> | 2012-08-27 11:53:59 -0700 |
commit | d8057a5b0ed644b1f72a4eb80f82da7ce8977958 (patch) | |
tree | 43c962073e49ff204f92345a2d0713bb56a56ffd /include/git2/object.h | |
parent | 2b175ca972f2531e5ef46d24abeb831d90033a33 (diff) | |
download | libgit2-d8057a5b0ed644b1f72a4eb80f82da7ce8977958.tar.gz |
Make git_object_peel a bit smarter
This expands the types of peeling that `git_object_peel` knows
how to do to include TAG -> BLOB peeling, and makes the errors
slightly more consistent depending on the situation. It also
adds a new special behavior where peeling to ANY will peel until
the object type changes (e.g. chases TAGs to a non-TAG).
Using this expanded peeling, this replaces peeling code that was
embedded in `git_tag_peel` and `git_reset`.
Diffstat (limited to 'include/git2/object.h')
-rw-r--r-- | include/git2/object.h | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/include/git2/object.h b/include/git2/object.h index 722434dec..fd6ae95c1 100644 --- a/include/git2/object.h +++ b/include/git2/object.h @@ -168,11 +168,14 @@ GIT_EXTERN(int) git_object_typeisloose(git_otype type); GIT_EXTERN(size_t) git_object__size(git_otype type); /** - * Recursively peel an object until an object of the specified - * type is met + * Recursively peel an object until an object of the specified type is met. * - * The retrieved `peeled` object is owned by the repository - * and should be closed with the `git_object_free` method. + * The retrieved `peeled` object is owned by the repository and should be + * closed with the `git_object_free` method. + * + * If you pass `GIT_OBJ_ANY` as the target type, then the object will be + * peeled until the type changes (e.g. a tag will be chased until the + * referenced object is no longer a tag). * * @param peeled Pointer to the peeled git_object * @param object The object to be processed |