summaryrefslogtreecommitdiff
path: root/remote.go
diff options
context:
space:
mode:
Diffstat (limited to 'remote.go')
-rw-r--r--remote.go15
1 files changed, 15 insertions, 0 deletions
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,
+ }
+}