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