summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Martín Nieto <[email protected]>2014-04-01 12:00:20 +0200
committerCarlos Martín Nieto <[email protected]>2014-04-01 12:00:20 +0200
commit286ff62b14f2471e58ed3dd93df50d2bbd4fc028 (patch)
treebe2216a6f005720d421bab415452e1071754e71a
parent5adb756c48acb54e6e745b3631c7d7250aeb1f3d (diff)
parent552557ba51343076c1f7378fc90f88508cab8b4b (diff)
Merge pull request #76 from jezell/walk-enhancements
Add missing walk functions
-rw-r--r--walk.go105
1 files changed, 102 insertions, 3 deletions
diff --git a/walk.go b/walk.go
index 71df7bb..f7c147d 100644
--- a/walk.go
+++ b/walk.go
@@ -9,6 +9,7 @@ import "C"
import (
"io"
"runtime"
+ "unsafe"
)
// RevWalk
@@ -37,8 +38,57 @@ func (v *RevWalk) Reset() {
C.git_revwalk_reset(v.ptr)
}
-func (v *RevWalk) Push(id *Oid) {
- C.git_revwalk_push(v.ptr, id.toC())
+func (v *RevWalk) Push(id *Oid) error {
+ runtime.LockOSThread()
+ defer runtime.UnlockOSThread()
+
+ ecode := C.git_revwalk_push(v.ptr, id.toC())
+ if ecode < 0 {
+ return MakeGitError(ecode)
+ }
+ return nil
+}
+
+func (v *RevWalk) PushGlob(glob string) error {
+ runtime.LockOSThread()
+ defer runtime.UnlockOSThread()
+
+ cstr := C.CString(glob)
+ defer C.free(unsafe.Pointer(cstr))
+
+ ecode := C.git_revwalk_push_glob(v.ptr, cstr)
+ if ecode < 0 {
+ return MakeGitError(ecode)
+ }
+ return nil
+}
+
+func (v *RevWalk) PushRange(r string) error {
+ runtime.LockOSThread()
+ defer runtime.UnlockOSThread()
+
+ cstr := C.CString(r)
+ defer C.free(unsafe.Pointer(cstr))
+
+ ecode := C.git_revwalk_push_range(v.ptr, cstr)
+ if ecode < 0 {
+ return MakeGitError(ecode)
+ }
+ return nil
+}
+
+func (v *RevWalk) PushRef(r string) error {
+ runtime.LockOSThread()
+ defer runtime.UnlockOSThread()
+
+ cstr := C.CString(r)
+ defer C.free(unsafe.Pointer(cstr))
+
+ ecode := C.git_revwalk_push_ref(v.ptr, cstr)
+ if ecode < 0 {
+ return MakeGitError(ecode)
+ }
+ return nil
}
func (v *RevWalk) PushHead() (err error) {
@@ -49,8 +99,57 @@ func (v *RevWalk) PushHead() (err error) {
if ecode < 0 {
err = MakeGitError(ecode)
}
+ return nil
+}
- return
+func (v *RevWalk) Hide(id *Oid) error {
+ runtime.LockOSThread()
+ defer runtime.UnlockOSThread()
+
+ ecode := C.git_revwalk_hide(v.ptr, id.toC())
+ if ecode < 0 {
+ return MakeGitError(ecode)
+ }
+ return nil
+}
+
+func (v *RevWalk) HideGlob(glob string) error {
+ runtime.LockOSThread()
+ defer runtime.UnlockOSThread()
+
+ cstr := C.CString(glob)
+ defer C.free(unsafe.Pointer(cstr))
+
+ ecode := C.git_revwalk_hide_glob(v.ptr, cstr)
+ if ecode < 0 {
+ return MakeGitError(ecode)
+ }
+ return nil
+}
+
+func (v *RevWalk) HideRef(r string) error {
+ runtime.LockOSThread()
+ defer runtime.UnlockOSThread()
+
+ cstr := C.CString(r)
+ defer C.free(unsafe.Pointer(cstr))
+
+ ecode := C.git_revwalk_hide_ref(v.ptr, cstr)
+ if ecode < 0 {
+ return MakeGitError(ecode)
+ }
+ return nil
+}
+
+func (v *RevWalk) HideHead() (err error) {
+ runtime.LockOSThread()
+ defer runtime.UnlockOSThread()
+
+ ecode := C.git_revwalk_hide_head(v.ptr)
+ if ecode < 0 {
+ err = MakeGitError(ecode)
+ }
+ return nil
}
func (v *RevWalk) Next(id *Oid) (err error) {