diff options
| author | Aidan Nulman <[email protected]> | 2014-02-24 03:05:44 -0500 |
|---|---|---|
| committer | Aidan Nulman <[email protected]> | 2014-02-24 03:05:44 -0500 |
| commit | 2656a72e823e16451480b7858213f6e3cb8bb2fd (patch) | |
| tree | e31656bc81965c4d18864d8305f2f6ff65fd627a /reference.go | |
| parent | decaf064f9ace275789657343d5123ee5290ea31 (diff) | |
| parent | c6d1bde37cc7f3bd213fc182fd9f60a7cd685419 (diff) | |
Merge branch 'master' into custom_odb
Conflicts:
git.go
reference.go
repository.go
submodule.go
Diffstat (limited to 'reference.go')
| -rw-r--r-- | reference.go | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/reference.go b/reference.go index 207b1b2..a2f1636 100644 --- a/reference.go +++ b/reference.go @@ -34,6 +34,9 @@ func (v *Reference) SetSymbolicTarget(target string, sig *Signature, msg string) ctarget := C.CString(target) defer C.free(unsafe.Pointer(ctarget)) + runtime.LockOSThread() + defer runtime.UnlockOSThread() + csig := sig.toC() defer C.free(unsafe.Pointer(csig)) @@ -41,7 +44,6 @@ func (v *Reference) SetSymbolicTarget(target string, sig *Signature, msg string) defer C.free(unsafe.Pointer(cmsg)) ret := C.git_reference_symbolic_set_target(&ptr, v.ptr, ctarget, csig, cmsg) - if ret < 0 { return nil, LastError() } @@ -52,6 +54,9 @@ func (v *Reference) SetSymbolicTarget(target string, sig *Signature, msg string) 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)) @@ -59,7 +64,6 @@ func (v *Reference) SetTarget(target *Oid, sig *Signature, msg string) (*Referen defer C.free(unsafe.Pointer(cmsg)) ret := C.git_reference_set_target(&ptr, v.ptr, target.toC(), csig, cmsg) - if ret < 0 { return nil, LastError() } @@ -81,15 +85,21 @@ func (v *Reference) Resolve() (*Reference, error) { return newReferenceFromC(ptr), nil } -func (v *Reference) Rename(name string, force bool) (*Reference, error) { +func (v *Reference) Rename(name string, force bool, sig *Signature, msg string) (*Reference, error) { var ptr *C.git_reference cname := C.CString(name) defer C.free(unsafe.Pointer(cname)) + csig := sig.toC() + defer C.free(unsafe.Pointer(csig)) + + cmsg := C.CString(msg) + defer C.free(unsafe.Pointer(cmsg)) + runtime.LockOSThread() defer runtime.UnlockOSThread() - ret := C.git_reference_rename(&ptr, v.ptr, cname, cbool(force)) + ret := C.git_reference_rename(&ptr, v.ptr, cname, cbool(force), csig, cmsg) if ret < 0 { return nil, LastError() @@ -132,6 +142,18 @@ func (v *Reference) Type() ReferenceType { return ReferenceType(C.git_reference_type(v.ptr)) } +func (v *Reference) IsBranch() bool { + return C.git_reference_is_branch(v.ptr) == 1 +} + +func (v *Reference) IsRemote() bool { + return C.git_reference_is_remote(v.ptr) == 1 +} + +func (v *Reference) IsTag() bool { + return C.git_reference_is_tag(v.ptr) == 1 +} + func (v *Reference) Free() { runtime.SetFinalizer(v, nil) C.git_reference_free(v.ptr) |
