2014-02-24 02:01:47 -06:00
|
|
|
package git
|
|
|
|
|
|
|
|
/*
|
|
|
|
#include <git2.h>
|
2014-04-03 16:12:31 -05:00
|
|
|
#include <git2/sys/refdb_backend.h>
|
2014-02-24 02:01:47 -06:00
|
|
|
|
|
|
|
extern void _go_git_refdb_backend_free(git_refdb_backend *backend);
|
|
|
|
*/
|
|
|
|
import "C"
|
|
|
|
import (
|
|
|
|
"runtime"
|
2016-09-30 09:00:20 -05:00
|
|
|
"unsafe"
|
2014-02-24 02:01:47 -06:00
|
|
|
)
|
|
|
|
|
|
|
|
type Refdb struct {
|
|
|
|
ptr *C.git_refdb
|
|
|
|
}
|
|
|
|
|
|
|
|
type RefdbBackend struct {
|
|
|
|
ptr *C.git_refdb_backend
|
|
|
|
}
|
|
|
|
|
|
|
|
func (v *Repository) NewRefdb() (refdb *Refdb, err error) {
|
|
|
|
refdb = new(Refdb)
|
|
|
|
|
2014-12-05 19:44:57 -06:00
|
|
|
runtime.LockOSThread()
|
|
|
|
defer runtime.UnlockOSThread()
|
|
|
|
|
2014-02-24 02:01:47 -06:00
|
|
|
ret := C.git_refdb_new(&refdb.ptr, v.ptr)
|
|
|
|
if ret < 0 {
|
2014-04-03 15:49:22 -05:00
|
|
|
return nil, MakeGitError(ret)
|
2014-02-24 02:01:47 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
runtime.SetFinalizer(refdb, (*Refdb).Free)
|
2014-04-03 15:39:21 -05:00
|
|
|
return refdb, nil
|
2014-02-24 02:01:47 -06:00
|
|
|
}
|
|
|
|
|
2016-09-30 09:00:20 -05:00
|
|
|
func NewRefdbBackendFromC(ptr unsafe.Pointer) (backend *RefdbBackend) {
|
|
|
|
backend = &RefdbBackend{(*C.git_refdb_backend)(ptr)}
|
2014-04-03 15:39:21 -05:00
|
|
|
return backend
|
2014-02-24 02:01:47 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
func (v *Refdb) SetBackend(backend *RefdbBackend) (err error) {
|
2014-12-05 19:44:57 -06:00
|
|
|
runtime.LockOSThread()
|
|
|
|
defer runtime.UnlockOSThread()
|
|
|
|
|
2014-02-24 02:01:47 -06:00
|
|
|
ret := C.git_refdb_set_backend(v.ptr, backend.ptr)
|
|
|
|
if ret < 0 {
|
|
|
|
backend.Free()
|
2014-04-03 15:49:22 -05:00
|
|
|
return MakeGitError(ret)
|
2014-02-24 02:01:47 -06:00
|
|
|
}
|
2014-04-03 15:39:21 -05:00
|
|
|
return nil
|
2014-02-24 02:01:47 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
func (v *RefdbBackend) Free() {
|
|
|
|
C._go_git_refdb_backend_free(v.ptr)
|
|
|
|
}
|