aboutsummaryrefslogtreecommitdiffstats
path: root/tree.go
diff options
context:
space:
mode:
authorJoshua Sjoding <joshua.sjoding@scjalliance.com>2016-03-03 00:33:00 -0800
committerJoshua Sjoding <joshua.sjoding@scjalliance.com>2016-03-08 13:09:54 -0800
commit9e6a03b7956464ccd9d2fbacedd8e5cc23572d02 (patch)
tree0282f20de8279db354233d1d67e3743e08509020 /tree.go
parent9c9cdff966cc181296f400769d3c8596f17e743a (diff)
downloadgo-git-9e6a03b7956464ccd9d2fbacedd8e5cc23572d02.tar.gz
Added Object interface for Commit, Tree, Blob and Tag
* New Object interface is distinct from core.Object * New Object interface is used in places where returned object could be of any type * Object is implemented by Commit, Tree, Blob, File and Tag * Added Repository.Object function for retrieving objects of any type * Tag.Object now returns Object instead of core.Object * Tag target hash is now publicly accessible * Renamed Tag.Type field to Tag.TargetType, making it distinct from Tag.Type function * Fixed infinite recursive loop in TagIter.Close * TreeWalker.Next now returns Object instead of core.Object * Removed some duplicate test setup code
Diffstat (limited to 'tree.go')
-rw-r--r--tree.go20
1 files changed, 15 insertions, 5 deletions
diff --git a/tree.go b/tree.go
index c8bebd8..246bf8c 100644
--- a/tree.go
+++ b/tree.go
@@ -127,6 +127,19 @@ func (t *Tree) Files() *FileIter {
return NewFileIter(t.r, t)
}
+// ID returns the object ID of the tree. The returned value will always match
+// the current value of Tree.Hash.
+//
+// ID is present to fufill the Object interface.
+func (t *Tree) ID() core.Hash {
+ return t.Hash
+}
+
+// Type returns the type of object. It always returns core.TreeObject.
+func (t *Tree) Type() core.ObjectType {
+ return core.TreeObject
+}
+
// Decode transform an core.Object into a Tree struct
func (t *Tree) Decode(o core.Object) (err error) {
if o.Type() != core.TreeObject {
@@ -229,12 +242,9 @@ func (iter *TreeIter) Next() (*Tree, error) {
return nil, err
}
- if obj.Type() != core.TreeObject {
- // Skip non-tree objects
- continue
+ if tree, ok := obj.(*Tree); ok {
+ return tree, nil
}
-
- return iter.w.Tree(), nil
}
}