Add Repository#RevParseSingle.
This commit is contained in:
parent
43b6e0b154
commit
691d8f23ba
17
revparse.go
17
revparse.go
|
@ -58,3 +58,20 @@ func (r *Repository) RevParse(spec string) (*RevSpec, error) {
|
||||||
|
|
||||||
return newRevSpecFrom(ptr, r), nil
|
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
|
||||||
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestRevParseSingle(t *testing.T) {
|
func TestRevParse(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
defer os.RemoveAll(repo.Workdir())
|
||||||
|
|
||||||
|
@ -17,6 +17,18 @@ func TestRevParseSingle(t *testing.T) {
|
||||||
checkObject(t, revSpec.From(), commitId)
|
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) {
|
func checkObject(t *testing.T, obj Object, id *Oid) {
|
||||||
if obj == nil {
|
if obj == nil {
|
||||||
t.Fatalf("bad object")
|
t.Fatalf("bad object")
|
||||||
|
|
Loading…
Reference in New Issue