| 225 | } |
| 226 | |
| 227 | func (v *Reference) Rename(name string, force bool, msg string) (*Reference, error) { |
| 228 | var ptr *C.git_reference |
| 229 | cname := C.CString(name) |
| 230 | defer C.free(unsafe.Pointer(cname)) |
| 231 | |
| 232 | var cmsg *C.char |
| 233 | if msg == "" { |
| 234 | cmsg = nil |
| 235 | } else { |
| 236 | cmsg = C.CString(msg) |
| 237 | defer C.free(unsafe.Pointer(cmsg)) |
| 238 | } |
| 239 | |
| 240 | runtime.LockOSThread() |
| 241 | defer runtime.UnlockOSThread() |
| 242 | |
| 243 | ret := C.git_reference_rename(&ptr, v.ptr, cname, cbool(force), cmsg) |
| 244 | runtime.KeepAlive(v) |
| 245 | if ret < 0 { |
| 246 | return nil, MakeGitError(ret) |
| 247 | } |
| 248 | |
| 249 | return newReferenceFromC(ptr, v.repo), nil |
| 250 | } |
| 251 | |
| 252 | func (v *Reference) Target() *Oid { |
| 253 | ret := newOidFromC(C.git_reference_target(v.ptr)) |