From 0e8009f00a65034d196c67b1cdd82af6f12c34d3 Mon Sep 17 00:00:00 2001 From: Yashodhan Ghadge Date: Sat, 23 Oct 2021 20:33:10 +0300 Subject: bugfix: HTTPS Clone fails with remote pointer not found using Go transport (#836) (#842) Fixes: #836 Changes: * adding a weak bool param for Remote * create a new remote in the smartTransportCallback incase one is not found --- remote.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'remote.go') diff --git a/remote.go b/remote.go index 7abc461..f4424fc 100644 --- a/remote.go +++ b/remote.go @@ -182,6 +182,9 @@ type Remote struct { ptr *C.git_remote callbacks RemoteCallbacks repo *Repository + // weak indicates that a remote is a weak pointer and should not be + // freed. + weak bool } type remotePointerList struct { @@ -602,6 +605,9 @@ func (r *Remote) free() { // Free releases the resources of the Remote. func (r *Remote) Free() { r.repo.Remotes.untrackRemote(r) + if r.weak { + return + } r.free() } @@ -1231,3 +1237,12 @@ func freeRemoteCreateOptions(ptr *C.git_remote_create_options) { C.free(unsafe.Pointer(ptr.name)) C.free(unsafe.Pointer(ptr.fetchspec)) } + +// createNewEmptyRemote used to get a new empty object of *Remote +func createNewEmptyRemote() *Remote { + return &Remote{ + callbacks: RemoteCallbacks{}, + repo: nil, + weak: false, + } +} -- cgit v1.2.3