class Git::Object::Tree

def blobs

def blobs
  @blobs ||= check_tree[:blobs]
end

def check_tree

actually run the git command
def check_tree
  @trees = {}
  @blobs = {}
  data = @base.lib.ls_tree(@objectish)
  data['tree'].each do |key, tree|
    @trees[key] = Git::Object::Tree.new(@base, tree[:sha], tree[:mode])
  end
  data['blob'].each do |key, blob|
    @blobs[key] = Git::Object::Blob.new(@base, blob[:sha], blob[:mode])
  end
  {
    :trees => @trees,
    :blobs => @blobs
  }
end

def children

def children
  blobs.merge(subtrees)
end

def depth

def depth
  @base.lib.tree_depth(@objectish)
end

def full_tree

def full_tree
  @base.lib.full_tree(@objectish)
end

def initialize(base, sha, mode = nil)

def initialize(base, sha, mode = nil)
  super(base, sha)
  @mode = mode
  @trees = nil
  @blobs = nil
end

def tree?

def tree?
  true
end

def trees

def trees
  @trees ||= check_tree[:trees]
end