summaryrefslogtreecommitdiff
path: root/reference.go
diff options
context:
space:
mode:
authorAidan Nulman <[email protected]>2014-01-29 18:10:38 -0500
committerAidan Nulman <[email protected]>2014-01-29 18:10:38 -0500
commitd59f6d6d9029e7ee75602a850b57292bbd1db761 (patch)
treee9341ad7caecc1048e355a2c7adfcb92f8b739ed /reference.go
parentf610cf25d71d44881b31157832b49e793efc2d56 (diff)
parentf66502aaf44862a8671285e80327d808afee155f (diff)
Merge branch 'catchupTo66af84' into custom_odb
Conflicts: git.go reference.go repository.go submodule.go
Diffstat (limited to 'reference.go')
-rw-r--r--reference.go26
1 files changed, 18 insertions, 8 deletions
diff --git a/reference.go b/reference.go
index 8e33354..207b1b2 100644
--- a/reference.go
+++ b/reference.go
@@ -11,6 +11,7 @@ import (
)
type ReferenceType int
+
const (
ReferenceSymbolic ReferenceType = C.GIT_REF_SYMBOLIC
ReferenceOid = C.GIT_REF_OID
@@ -27,15 +28,20 @@ func newReferenceFromC(ptr *C.git_reference) *Reference {
return ref
}
-func (v *Reference) SetSymbolicTarget(target string) (*Reference, error) {
+func (v *Reference) SetSymbolicTarget(target string, sig *Signature, msg string) (*Reference, error) {
var ptr *C.git_reference
+
ctarget := C.CString(target)
defer C.free(unsafe.Pointer(ctarget))
- runtime.LockOSThread()
- defer runtime.UnlockOSThread()
+ csig := sig.toC()
+ defer C.free(unsafe.Pointer(csig))
+
+ cmsg := C.CString(msg)
+ defer C.free(unsafe.Pointer(cmsg))
+
+ ret := C.git_reference_symbolic_set_target(&ptr, v.ptr, ctarget, csig, cmsg)
- ret := C.git_reference_symbolic_set_target(&ptr, v.ptr, ctarget)
if ret < 0 {
return nil, LastError()
}
@@ -43,13 +49,17 @@ func (v *Reference) SetSymbolicTarget(target string) (*Reference, error) {
return newReferenceFromC(ptr), nil
}
-func (v *Reference) SetTarget(target *Oid) (*Reference, error) {
+func (v *Reference) SetTarget(target *Oid, sig *Signature, msg string) (*Reference, error) {
var ptr *C.git_reference
- runtime.LockOSThread()
- defer runtime.UnlockOSThread()
+ csig := sig.toC()
+ defer C.free(unsafe.Pointer(csig))
+
+ cmsg := C.CString(msg)
+ defer C.free(unsafe.Pointer(cmsg))
+
+ ret := C.git_reference_set_target(&ptr, v.ptr, target.toC(), csig, cmsg)
- ret := C.git_reference_set_target(&ptr, v.ptr, target.toC())
if ret < 0 {
return nil, LastError()
}