libgit2

git_object_peel

Version:

Recursively peel an object until an object of the specified type is met.

If the query cannot be satisfied due to the object model, GIT_EINVALIDSPEC will be returned (e.g. trying to peel a blob to a tree).

If you pass GIT_OBJECT_ANY as the target type, then the object will be peeled until the type changes. A tag will be peeled until the referenced object is no longer a tag, and a commit will be peeled to a tree. Any other object type will return GIT_EINVALIDSPEC.

If peeling a tag we discover an object which cannot be peeled to the target type due to the object model, GIT_EPEEL will be returned.

You must free the returned object.

Signature

int git_object_peel(git_object **peeled, const git_object *object, git_object_t target_type);

Parameters

In
peeled

Pointer to the peeled git_object

In
object

The object to be processed

In
target_type

The type of the requested object (a GIT_OBJECT_ value)

Returns

int

0 on success, GIT_EINVALIDSPEC, GIT_EPEEL, or an error code

Versions