From 393098522c3f01b1cd765581c4d4e6d43f3a02d0 Mon Sep 17 00:00:00 2001 From: Mirko Nosenzo Date: Sun, 29 May 2016 14:44:29 +0200 Subject: [PATCH] Remote Refinements - Fixed credentialsCallback return value for missing callback - Added Remote Rename - Added Remote Disconnect --- remote.go | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/remote.go b/remote.go index 8a57280..d063c17 100644 --- a/remote.go +++ b/remote.go @@ -215,7 +215,7 @@ func completionCallback(completion_type C.git_remote_completion_type, data unsaf func credentialsCallback(_cred **C.git_cred, _url *C.char, _username_from_url *C.char, allowed_types uint, data unsafe.Pointer) int { callbacks, _ := pointerHandles.Get(data).(*RemoteCallbacks) if callbacks.CredentialsCallback == nil { - return 0 + return C.GIT_PASSTHROUGH } url := C.GoString(_url) username_from_url := C.GoString(_username_from_url) @@ -454,6 +454,25 @@ func (o *Remote) PushUrl() string { return C.GoString(C.git_remote_pushurl(o.ptr)) } +func (c *RemoteCollection) Rename(remote, newname string) error { + cproblems := C.git_strarray{} + + cnewname := C.CString(newname) + defer C.free(unsafe.Pointer(cnewname)) + cremote := C.CString(remote) + defer C.free(unsafe.Pointer(cremote)) + + runtime.LockOSThread() + defer runtime.UnlockOSThread() + + ret := C.git_remote_rename(&cproblems, c.repo.ptr, cremote, cnewname) + if ret < 0 { + return MakeGitError(ret) + } + C.git_strarray_free(&cproblems) + return nil +} + func (c *RemoteCollection) SetUrl(remote, url string) error { curl := C.CString(url) defer C.free(unsafe.Pointer(curl)) @@ -687,6 +706,13 @@ func (o *Remote) Connect(direction ConnectDirection, callbacks *RemoteCallbacks, return nil } +func (o *Remote) Disconnect() { + runtime.LockOSThread() + defer runtime.UnlockOSThread() + + C.git_remote_disconnect(o.ptr) +} + func (o *Remote) Ls(filterRefs ...string) ([]RemoteHead, error) { var refs **C.git_remote_head