summaryrefslogtreecommitdiff
path: root/reference.go
diff options
context:
space:
mode:
authorCarlos Martín Nieto <[email protected]>2014-05-23 11:37:00 +0200
committerCarlos Martín Nieto <[email protected]>2014-05-23 11:37:00 +0200
commit22bcd7decf314f0482643554d5472d1d8dc7c12a (patch)
treef2f287d26a2222da1fea5a9692dcee055471ec87 /reference.go
parentf5e1252d6e391c634b4bfd008124a58e9e0a5bf3 (diff)
Reference: expose Peel()
Peel a reference to a particular type of object, returning an Object, which you then perform a type assertion on.
Diffstat (limited to 'reference.go')
-rw-r--r--reference.go13
1 files changed, 13 insertions, 0 deletions
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 {