diff options
| author | Carlos Martín Nieto <[email protected]> | 2014-04-26 20:27:54 +0200 |
|---|---|---|
| committer | Carlos Martín Nieto <[email protected]> | 2014-04-26 20:30:57 +0200 |
| commit | 57f14a25914b431a9034b252314edf74cf7eecbf (patch) | |
| tree | 05d68136f5ee7dc676e76021ac675bbc0208a772 /refdb.go | |
| parent | 605f942e940a7b69803030e8ca843fa0f94ae7d8 (diff) | |
| parent | cbc81246afe58f4e3176ec2e4e930dcb0145a2a2 (diff) | |
Merge commit 'refs/pull/48/head' of github.com:libgit2/git2go
Diffstat (limited to 'refdb.go')
| -rw-r--r-- | refdb.go | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/refdb.go b/refdb.go new file mode 100644 index 0000000..46fbb63 --- /dev/null +++ b/refdb.go @@ -0,0 +1,51 @@ +package git + +/* +#include <git2.h> +#include <git2/errors.h> +#include <git2/sys/refdb_backend.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, MakeGitError(ret) + } + + runtime.SetFinalizer(refdb, (*Refdb).Free) + return refdb, nil +} + +func NewRefdbBackendFromC(ptr *C.git_refdb_backend) (backend *RefdbBackend) { + backend = &RefdbBackend{ptr} + return backend +} + +func (v *Refdb) SetBackend(backend *RefdbBackend) (err error) { + ret := C.git_refdb_set_backend(v.ptr, backend.ptr) + if ret < 0 { + backend.Free() + return MakeGitError(ret) + } + return nil +} + +func (v *RefdbBackend) Free() { + C._go_git_refdb_backend_free(v.ptr) +} |
