diff options
| author | Aidan Nulman <[email protected]> | 2014-02-24 03:01:47 -0500 |
|---|---|---|
| committer | Aidan Nulman <[email protected]> | 2014-02-24 03:01:47 -0500 |
| commit | decaf064f9ace275789657343d5123ee5290ea31 (patch) | |
| tree | 843bbf40222a52103a45337bac397371279c780c /refdb.go | |
| parent | 1c23e8ece34d217bcc787f1c5da6bfb143f27e9b (diff) | |
add custom refdb backend support
Diffstat (limited to 'refdb.go')
| -rw-r--r-- | refdb.go | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/refdb.go b/refdb.go new file mode 100644 index 0000000..3b8ed03 --- /dev/null +++ b/refdb.go @@ -0,0 +1,50 @@ +package git + +/* +#include <git2.h> +#include <git2/errors.h> + +extern void _go_git_refdb_backend_free(git_refdb_backend *backend); +*/ +import "C" +import ( + "runtime" +) + +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) + + ret := C.git_refdb_new(&refdb.ptr, v.ptr) + if ret < 0 { + return nil, LastError() + } + + runtime.SetFinalizer(refdb, (*Refdb).Free) + return +} + +func NewRefdbBackendFromC(ptr *C.git_refdb_backend) (backend *RefdbBackend) { + backend = &RefdbBackend{ptr} + return +} + +func (v *Refdb) SetBackend(backend *RefdbBackend) (err error) { + ret := C.git_refdb_set_backend(v.ptr, backend.ptr) + if ret < 0 { + backend.Free() + err = LastError() + } + return +} + +func (v *RefdbBackend) Free() { + C._go_git_refdb_backend_free(v.ptr) +} |
