diff options
| author | David Calavera <[email protected]> | 2014-07-24 17:41:10 -0700 |
|---|---|---|
| committer | David Calavera <[email protected]> | 2014-07-24 17:41:10 -0700 |
| commit | 691d8f23bad4e6ff850fd0504bc7a8ed1cd656e9 (patch) | |
| tree | 82e021bb86bfdd5aabbd2dd5d7c795c3de579375 | |
| parent | 43b6e0b15487b3a109f586fedfc69c8e73089b70 (diff) | |
Add Repository#RevParseSingle.
| -rw-r--r-- | revparse.go | 17 | ||||
| -rw-r--r-- | revparse_test.go | 14 |
2 files changed, 30 insertions, 1 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 +} diff --git a/revparse_test.go b/revparse_test.go index 45dc7dc..df553a0 100644 --- a/revparse_test.go +++ b/revparse_test.go @@ -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") |
