summaryrefslogtreecommitdiff
path: root/revparse.go
diff options
context:
space:
mode:
authorDavid Calavera <[email protected]>2014-07-24 17:02:14 -0700
committerDavid Calavera <[email protected]>2014-07-24 17:02:14 -0700
commit8bbcdd65a64773b06ad4f88b183c7f3e1248b8f0 (patch)
tree0860d79297ab96e8f5134b11fb6ffdd8f4117105 /revparse.go
parent3003e5e190bb566a978062a63247d250ec5c1c28 (diff)
Move RevSpec#From and RevSpec#To to struct methods.
Diffstat (limited to 'revparse.go')
-rw-r--r--revparse.go26
1 files changed, 16 insertions, 10 deletions
diff --git a/revparse.go b/revparse.go
index f78867f..7c43798 100644
--- a/revparse.go
+++ b/revparse.go
@@ -14,39 +14,45 @@ import (
type RevSpec struct {
ptr *C.git_revspec
- From Object
- To Object
repo *Repository
}
func newRevSpecFrom(ptr *C.git_revspec, repo *Repository) *RevSpec {
rev := &RevSpec{
ptr: ptr,
- From: allocObject(ptr.from, repo),
- To: allocObject(ptr.to, repo),
repo: repo,
}
- runtime.SetFinalizer(rev, (*RevSpec).Free)
return rev
}
-func (r *RevSpec) Free() {
- runtime.SetFinalizer(r, nil)
- r.From.Free()
- r.To.Free()
+func (r *RevSpec) From() Object {
+ if r.ptr.from == nil {
+ return nil
+ }
+
+ return allocObject(r.ptr.from, r.repo)
+}
+
+func (r *RevSpec) To() Object {
+ if r.ptr.to == nil {
+ return nil
+ }
+
+ return allocObject(r.ptr.to, r.repo)
}
func (r *Repository) RevParse(spec string) (*RevSpec, error) {
cspec := C.CString(spec)
defer C.free(unsafe.Pointer(cspec))
+
var ptr *C.git_revspec
runtime.LockOSThread()
defer runtime.UnlockOSThread()
ecode := C.git_revparse(ptr, r.ptr, cspec)
- if ecode < 0 {
+ if ecode != 0 {
return nil, MakeGitError(ecode)
}