summaryrefslogtreecommitdiff
path: root/odb.go
diff options
context:
space:
mode:
Diffstat (limited to 'odb.go')
-rw-r--r--odb.go23
1 files changed, 22 insertions, 1 deletions
diff --git a/odb.go b/odb.go
index acde696..774e94c 100644
--- a/odb.go
+++ b/odb.go
@@ -17,8 +17,29 @@ type Odb struct {
ptr *C.git_odb
}
+// OdbBackends need public Ptrs: client apps init the backend
type OdbBackend struct {
- ptr *C.git_odb_backend
+ Ptr *C.git_odb_backend
+}
+
+func InitOdb() (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 (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 {