class Envirobly::Git::Commit
def object_tree(ref: @ref, chdir: @working_dir)
def object_tree(ref: @ref, chdir: @working_dir) @object_tree ||= begin objects = {} objects[chdir] = [] git(%(ls-tree -r #{ref}), chdir:).stdout.lines.each do |line| mode, type, object_hash, path = line.split(/\s+/) next if path.start_with?("#{Envirobly::Config::DIR}/") if type == "commit" objects.merge! object_tree(ref: object_hash, chdir: File.join(chdir, path)) else objects[chdir] << [ mode, type, object_hash, path ] end end objects end end