Method: Rugged::Reference#peel
- Defined in:
- ext/rugged/rugged_reference.c
#peel ⇒ Object
Peels tag objects to the sha that they point at. Replicates git show-ref –dereference.
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'ext/rugged/rugged_reference.c', line 85
static VALUE rb_git_ref_peel(VALUE self)
{
/* Leave room for \0 */
git_reference *ref;
git_object *object;
char oid[GIT_OID_HEXSZ + 1];
int error;
Data_Get_Struct(self, git_reference, ref);
error = git_reference_peel(&object, ref, GIT_OBJ_ANY);
if (error == GIT_ENOTFOUND)
return Qnil;
else
rugged_exception_check(error);
if (git_reference_type(ref) == GIT_REF_OID &&
!git_oid_cmp(git_object_id(object), git_reference_target(ref))) {
git_object_free(object);
return Qnil;
} else {
git_oid_tostr(oid, sizeof(oid), git_object_id(object));
git_object_free(object);
return rb_str_new_utf8(oid);
}
}
|