summaryrefslogtreecommitdiff
path: root/tree.go
diff options
context:
space:
mode:
Diffstat (limited to 'tree.go')
-rw-r--r--tree.go29
1 files changed, 13 insertions, 16 deletions
diff --git a/tree.go b/tree.go
index dc82929..d8a639c 100644
--- a/tree.go
+++ b/tree.go
@@ -17,6 +17,19 @@ type Tree struct {
ptr *C.git_tree
}
+func (o *Tree) Id() *Oid {
+ return newOidFromC(C.git_tree_id(o.ptr))
+}
+
+func (o *Tree) Type() ObjectType {
+ return OBJ_TREE
+}
+
+func (o *Tree) Free() {
+ runtime.SetFinalizer(o, nil)
+ C.git_tree_free(o.ptr)
+}
+
type TreeEntry struct {
Name string
Id *Oid
@@ -31,22 +44,6 @@ func newTreeEntry(entry *C.git_tree_entry) *TreeEntry {
}
}
-func (t *Tree) Free() {
- runtime.SetFinalizer(t, nil)
- C.git_tree_free(t.ptr)
-}
-
-func TreeLookup(repo *Repository, oid *Oid) (*Tree, error) {
- tree := new(Tree)
- err := C.git_tree_lookup(&tree.ptr, repo.ptr, oid.toC())
- if err < 0 {
- return nil, LastError()
- }
-
- runtime.SetFinalizer(tree, (*Tree).Free)
- return tree, nil
-}
-
func (t *Tree) EntryByName(filename string) *TreeEntry {
cname := C.CString(filename)
defer C.free(unsafe.Pointer(cname))