diff options
| -rw-r--r-- | odb.go | 30 | ||||
| -rw-r--r-- | repository.go | 12 |
2 files changed, 42 insertions, 0 deletions
@@ -17,6 +17,36 @@ type Odb struct { ptr *C.git_odb } +type OdbBackend struct { + ptr *C.git_odb_backend +} + +func NewOdb() (odb *Odb, err error) { + odb = new(Odb) + + ret := C.git_odb_new(&odb.ptr) + if ret < 0 { + return nil, LastError() + } + + runtime.SetFinalizer(odb, (*Odb).Free) + return +} + +func NewOdbBackendFromC(ptr *C.git_odb_backend) (backend *OdbBackend) { + backend = &OdbBackend{ptr} + return +} + + +func (v *Odb) AddBackend(backend *OdbBackend, priority int) (err error) { + ret := C.git_odb_add_backend(v.ptr, backend.ptr, C.int(priority)) + if ret < 0 { + err = LastError() + } + return nil +} + func (v *Odb) Exists(oid *Oid) bool { ret := C.git_odb_exists(v.ptr, oid.toC()) return ret != 0 diff --git a/repository.go b/repository.go index 3a9068d..8c6e8f8 100644 --- a/repository.go +++ b/repository.go @@ -51,6 +51,18 @@ func InitRepository(path string, isbare bool) (*Repository, error) { return repo, nil } +func NewRepositoryWrapOdb(odb *Odb) (repo *Repository, err error) { + repo = new(Repository) + + ret := C.git_repository_wrap_odb(&repo.ptr, odb.ptr) + if ret < 0 { + return nil, LastError() + } + + runtime.SetFinalizer(repo, (*Repository).Free) + return +} + func (v *Repository) Free() { runtime.SetFinalizer(v, nil) C.git_repository_free(v.ptr) |
