From 22bcd7decf314f0482643554d5472d1d8dc7c12a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Fri, 23 May 2014 11:37:00 +0200 Subject: [PATCH] Reference: expose Peel() Peel a reference to a particular type of object, returning an Object, which you then perform a type assertion on. --- reference.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/reference.go b/reference.go index 98facc2..8c8b282 100644 --- a/reference.go +++ b/reference.go @@ -148,6 +148,19 @@ func (v *Reference) Delete() error { return nil } +func (v *Reference) Peel(t ObjectType) (Object, error) { + var cobj *C.git_object + + runtime.LockOSThread() + defer runtime.UnlockOSThread() + + if err := C.git_reference_peel(&cobj, v.ptr, C.git_otype(t)); err < 0 { + return nil, MakeGitError(err) + } + + return allocObject(cobj), nil +} + // Cmp compares both references, retursn 0 on equality, otherwise a // stable sorting. func (v *Reference) Cmp(ref2 *Reference) int {