diff options
| author | David Calavera <[email protected]> | 2014-07-24 21:03:50 -0700 |
|---|---|---|
| committer | David Calavera <[email protected]> | 2014-07-24 21:03:50 -0700 |
| commit | 94d207e11cf2b7c3f405191c0525cdf67b4b14f7 (patch) | |
| tree | 6e8ab1ef3f8026549bce6b5bf26ff46240471d0c /revparse.go | |
| parent | 691d8f23bad4e6ff850fd0504bc7a8ed1cd656e9 (diff) | |
Add Repository#RevParseExt.
Diffstat (limited to 'revparse.go')
| -rw-r--r-- | revparse.go | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/revparse.go b/revparse.go index 9cd494f..05a75a0 100644 --- a/revparse.go +++ b/revparse.go @@ -75,3 +75,25 @@ func (r *Repository) RevParseSingle(spec string) (Object, error) { return allocObject(obj, r), nil } + +func (r *Repository) RevParseExt(spec string) (Object, *Reference, error) { + cspec := C.CString(spec) + defer C.free(unsafe.Pointer(cspec)) + + var obj *C.git_object + var ref *C.git_reference + + runtime.LockOSThread() + defer runtime.UnlockOSThread() + + ecode := C.git_revparse_ext(&obj, &ref, r.ptr, cspec) + if ecode != 0 { + return nil, nil, MakeGitError(ecode) + } + + if ref == nil { + return allocObject(obj, r), nil, nil + } + + return allocObject(obj, r), newReferenceFromC(ref, r), nil +} |
