repo_tree.go 525 B

1234567891011121314151617181920212223
  1. package git
  2. func (repo *Repository) getTree(id sha1) (*Tree, error) {
  3. treePath := filepathFromSHA1(repo.Path, id.String())
  4. if isFile(treePath) {
  5. _, err := NewCommand("ls-tree", id.String()).RunInDir(repo.Path)
  6. if err != nil {
  7. return nil, ErrNotExist{id.String(), ""}
  8. }
  9. }
  10. return NewTree(repo, id), nil
  11. }
  12. // Find the tree object in the repository.
  13. func (repo *Repository) GetTree(idStr string) (*Tree, error) {
  14. id, err := NewIDFromString(idStr)
  15. if err != nil {
  16. return nil, err
  17. }
  18. return repo.getTree(id)
  19. }