Add Repository#RevParseSingle.

This commit is contained in:
David Calavera 2014-07-24 17:41:10 -07:00
parent 43b6e0b154
commit 691d8f23ba
2 changed files with 30 additions and 1 deletions

View File

@ -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
}

View File

@ -5,7 +5,7 @@ import (
"testing"
)
func TestRevParseSingle(t *testing.T) {
func TestRevParse(t *testing.T) {
repo := createTestRepo(t)
defer os.RemoveAll(repo.Workdir())
@ -17,6 +17,18 @@ func TestRevParseSingle(t *testing.T) {
checkObject(t, revSpec.From(), commitId)
}
func TestRevParseSingle(t *testing.T) {
repo := createTestRepo(t)
defer os.RemoveAll(repo.Workdir())
commitId, _ := seedTestRepo(t, repo)
obj, err := repo.RevParseSingle("HEAD")
checkFatal(t, err)
checkObject(t, obj, commitId)
}
func checkObject(t *testing.T, obj Object, id *Oid) {
if obj == nil {
t.Fatalf("bad object")