summaryrefslogtreecommitdiff
path: root/revparse.go
diff options
context:
space:
mode:
Diffstat (limited to 'revparse.go')
-rw-r--r--revparse.go17
1 files changed, 17 insertions, 0 deletions
diff --git a/revparse.go b/revparse.go
index bc9a4e2..9cd494f 100644
--- a/revparse.go
+++ b/revparse.go
@@ -58,3 +58,20 @@ func (r *Repository) RevParse(spec string) (*RevSpec, error) {
return newRevSpecFrom(ptr, r), nil
}
+
+func (r *Repository) RevParseSingle(spec string) (Object, error) {
+ cspec := C.CString(spec)
+ defer C.free(unsafe.Pointer(cspec))
+
+ var obj *C.git_object
+
+ runtime.LockOSThread()
+ defer runtime.UnlockOSThread()
+
+ ecode := C.git_revparse_single(&obj, r.ptr, cspec)
+ if ecode != 0 {
+ return nil, MakeGitError(ecode)
+ }
+
+ return allocObject(obj, r), nil
+}