summaryrefslogtreecommitdiff
path: root/include/git2/object.h
diff options
context:
space:
mode:
authorRussell Belfer <rb@github.com>2012-08-27 11:53:59 -0700
committerRussell Belfer <rb@github.com>2012-08-27 11:53:59 -0700
commitd8057a5b0ed644b1f72a4eb80f82da7ce8977958 (patch)
tree43c962073e49ff204f92345a2d0713bb56a56ffd /include/git2/object.h
parent2b175ca972f2531e5ef46d24abeb831d90033a33 (diff)
downloadlibgit2-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.h11
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