Skip to content

Commit 5971376

Browse files
committed
improve gogit build
1 parent 4a8637f commit 5971376

File tree

5 files changed

+26
-32
lines changed

5 files changed

+26
-32
lines changed

modules/git/notes_gogit.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,11 @@ func GetNote(ctx context.Context, repo *Repository, commitID string, note *Note)
3131
remainingCommitID := commitID
3232
path := ""
3333
tree := NewTree(repo, notes.TreeID)
34-
currentTree := tree.gogitTree
34+
currentTree, err := tree.getGogitTree()
35+
if err != nil {
36+
log.Error("Unable to get git tree for notes commit %q. Error: %v", notes.ID, err)
37+
return err
38+
}
3539
log.Trace("Found tree with ID %q while searching for git note corresponding to the commit %q", currentTree.Entries[0].Name, commitID)
3640
var file *object.File
3741
for len(remainingCommitID) > 2 {

modules/git/tree.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,14 @@ import (
1212
"code.gitea.io/gitea/modules/util"
1313
)
1414

15+
// NewTree create a new tree according the repository and tree id
16+
func NewTree(repo *Repository, id ObjectID) *Tree {
17+
return &Tree{
18+
ID: id,
19+
repo: repo,
20+
}
21+
}
22+
1523
// SubTree get a subtree by the sub dir path
1624
func (t *Tree) SubTree(rpath string) (*Tree, error) {
1725
if len(rpath) == 0 {

modules/git/tree_entry_gogit.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
package git
88

99
import (
10+
"code.gitea.io/gitea/modules/log"
1011
"github.com/go-git/go-git/v5/plumbing"
1112
"github.com/go-git/go-git/v5/plumbing/filemode"
1213
"github.com/go-git/go-git/v5/plumbing/object"
@@ -41,6 +42,11 @@ func (te *TreeEntry) Size() int64 {
4142
return te.size
4243
}
4344

45+
if err := te.ptree.loadTreeObject(); err != nil {
46+
log.Error("Unable to load tree object: %v", err)
47+
return 0
48+
}
49+
4450
file, err := te.ptree.gogitTree.TreeEntryFile(te.gogitTreeEntry)
4551
if err != nil {
4652
return 0

modules/git/tree_gogit.go

Lines changed: 7 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -27,21 +27,10 @@ type Tree struct {
2727
submoduleCache *ObjectCache[*SubModule]
2828
}
2929

30-
// NewTree create a new tree according the repository and tree id
31-
func NewTree(repo *Repository, id ObjectID) *Tree {
32-
tree, err := object.GetTree(repo.gogitRepo.Storer, plumbing.Hash(id.RawValue()))
33-
if err != nil {
30+
func (t *Tree) loadTreeObject() error {
31+
if t.gogitTree != nil {
3432
return nil
3533
}
36-
37-
return &Tree{
38-
ID: id,
39-
repo: repo,
40-
gogitTree: tree,
41-
}
42-
}
43-
44-
func (t *Tree) loadTreeObject() error {
4534
gogitTree, err := t.repo.gogitRepo.TreeObject(plumbing.Hash(t.ID.RawValue()))
4635
if err != nil {
4736
return err
@@ -53,11 +42,8 @@ func (t *Tree) loadTreeObject() error {
5342

5443
// ListEntries returns all entries of current tree.
5544
func (t *Tree) ListEntries() (Entries, error) {
56-
if t.gogitTree == nil {
57-
err := t.loadTreeObject()
58-
if err != nil {
59-
return nil, err
60-
}
45+
if err := t.loadTreeObject(); err != nil {
46+
return nil, err
6147
}
6248

6349
entries := make([]*TreeEntry, len(t.gogitTree.Entries))
@@ -74,11 +60,9 @@ func (t *Tree) ListEntries() (Entries, error) {
7460

7561
// ListEntriesRecursiveWithSize returns all entries of current tree recursively including all subtrees
7662
func (t *Tree) ListEntriesRecursiveWithSize() (Entries, error) {
77-
if t.gogitTree == nil {
78-
err := t.loadTreeObject()
79-
if err != nil {
80-
return nil, err
81-
}
63+
err := t.loadTreeObject()
64+
if err != nil {
65+
return nil, err
8266
}
8367

8468
var entries []*TreeEntry

modules/git/tree_nogogit.go

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,6 @@ type Tree struct {
2828
submoduleCache *ObjectCache[*SubModule]
2929
}
3030

31-
// NewTree create a new tree according the repository and tree id
32-
func NewTree(repo *Repository, id ObjectID) *Tree {
33-
return &Tree{
34-
ID: id,
35-
repo: repo,
36-
}
37-
}
38-
3931
// ListEntries returns all entries of current tree.
4032
func (t *Tree) ListEntries() (Entries, error) {
4133
if t.entriesParsed {

0 commit comments

Comments
 (0)