Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. // Copyright 2015 The Gogs Authors. All rights reserved.
  2. // Copyright 2019 The Gitea Authors. All rights reserved.
  3. // SPDX-License-Identifier: MIT
  4. //go:build gogit
  5. package git
  6. func (repo *Repository) getTree(id SHA1) (*Tree, error) {
  7. gogitTree, err := repo.gogitRepo.TreeObject(id)
  8. if err != nil {
  9. return nil, err
  10. }
  11. tree := NewTree(repo, id)
  12. tree.gogitTree = gogitTree
  13. return tree, nil
  14. }
  15. // GetTree find the tree object in the repository.
  16. func (repo *Repository) GetTree(idStr string) (*Tree, error) {
  17. if len(idStr) != SHAFullLength {
  18. res, _, err := NewCommand(repo.Ctx, "rev-parse", "--verify").AddDynamicArguments(idStr).RunStdString(&RunOpts{Dir: repo.Path})
  19. if err != nil {
  20. return nil, err
  21. }
  22. if len(res) > 0 {
  23. idStr = res[:len(res)-1]
  24. }
  25. }
  26. id, err := NewIDFromString(idStr)
  27. if err != nil {
  28. return nil, err
  29. }
  30. resolvedID := id
  31. commitObject, err := repo.gogitRepo.CommitObject(id)
  32. if err == nil {
  33. id = SHA1(commitObject.TreeHash)
  34. }
  35. treeObject, err := repo.getTree(id)
  36. if err != nil {
  37. return nil, err
  38. }
  39. treeObject.ResolvedID = resolvedID
  40. return treeObject, nil
  41. }