Skip to content

Commit f87a594

Browse files
committed
Some improvements
1 parent e989642 commit f87a594

File tree

6 files changed

+36
-25
lines changed

6 files changed

+36
-25
lines changed

modules/actions/workflows.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ package actions
55

66
import (
77
"bytes"
8-
"context"
98
"io"
109
"strings"
1110

@@ -57,7 +56,7 @@ func ListWorkflows(commit *git.Commit) (git.Entries, error) {
5756
}
5857

5958
ret := make(git.Entries, 0, 5)
60-
if err := tree.IterateEntriesRecursive(context.Background(), func(entry *git.TreeEntry) error {
59+
if err := tree.IterateEntriesRecursive(func(entry *git.TreeEntry) error {
6160
if strings.HasSuffix(entry.Name(), ".yml") || strings.HasSuffix(entry.Name(), ".yaml") {
6261
ret = append(ret, entry)
6362
}

modules/git/repo_language_stats_nogogit.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ func (repo *Repository) GetLanguageStats(commitID string) (map[string]int64, err
7272
firstExcludedLanguage := ""
7373
firstExcludedLanguageSize := int64(0)
7474

75-
if err := tree.IterateEntriesRecursive(repo.Ctx, func(f *TreeEntry) error {
75+
if err := tree.IterateEntriesRecursive(func(f *TreeEntry) error {
7676
contentBuf.Reset()
7777
content = contentBuf.Bytes()
7878

modules/git/tree_gogit.go

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

99
import (
10-
"context"
1110
"io"
1211

1312
"github.com/go-git/go-git/v5/plumbing"
@@ -58,15 +57,32 @@ func (t *Tree) ListEntries() (Entries, error) {
5857
}
5958

6059
// ListEntriesRecursiveWithSize returns all entries of current tree recursively including all subtrees
61-
func (t *Tree) ListEntriesRecursiveWithSize(ctx context.Context) (Entries, error) {
60+
func (t *Tree) ListEntriesRecursiveWithSize() (Entries, error) {
61+
var entries []*TreeEntry
62+
if err := t.IterateEntriesRecursive(func(entry *TreeEntry) error {
63+
entries = append(entries, convertedEntry)
64+
return nil
65+
}); err != nil {
66+
return nil, err
67+
}
68+
return entries, nil
69+
}
70+
71+
// ListEntriesRecursiveFast is the alias of ListEntriesRecursiveWithSize for the gogit version
72+
func (t *Tree) ListEntriesRecursiveFast() (Entries, error) {
73+
return t.ListEntriesRecursiveWithSize()
74+
}
75+
76+
// IterateEntriesRecursive returns iterate entries of current tree recursively including all subtrees
77+
// extraArgs could be "-l" to get the size, which is slower
78+
func (t *Tree) IterateEntriesRecursive(f func(entry *TreeEntry) error, extraArgs TrustedCmdArgs) error {
6279
if t.gogitTree == nil {
6380
err := t.loadTreeObject()
6481
if err != nil {
6582
return nil, err
6683
}
6784
}
6885

69-
var entries []*TreeEntry
7086
seen := map[plumbing.Hash]bool{}
7187
walker := object.NewTreeWalker(t.gogitTree, true, seen)
7288
for {
@@ -87,13 +103,10 @@ func (t *Tree) ListEntriesRecursiveWithSize(ctx context.Context) (Entries, error
87103
ptree: t,
88104
fullName: fullName,
89105
}
90-
entries = append(entries, convertedEntry)
106+
if err := f(convertedEntry); err != nil {
107+
return nil, err
108+
}
91109
}
92110

93-
return entries, nil
94-
}
95-
96-
// ListEntriesRecursiveFast is the alias of ListEntriesRecursiveWithSize for the gogit version
97-
func (t *Tree) ListEntriesRecursiveFast(ctx context.Context) (Entries, error) {
98-
return t.ListEntriesRecursiveWithSize(ctx)
111+
return nil
99112
}

modules/git/tree_nogogit.go

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

88
import (
99
"bufio"
10-
"context"
1110
"io"
1211
"strings"
1312
)
@@ -93,13 +92,13 @@ func (t *Tree) ListEntries() (Entries, error) {
9392

9493
// listEntriesRecursive returns all entries of current tree recursively including all subtrees
9594
// extraArgs could be "-l" to get the size, which is slower
96-
func (t *Tree) listEntriesRecursive(ctx context.Context, extraArgs TrustedCmdArgs) (Entries, error) {
95+
func (t *Tree) listEntriesRecursive(extraArgs TrustedCmdArgs) (Entries, error) {
9796
if t.entriesRecursiveParsed {
9897
return t.entriesRecursive, nil
9998
}
10099

101100
t.entriesRecursive = make([]*TreeEntry, 0)
102-
if err := t.IterateEntriesRecursive(ctx, func(entry *TreeEntry) error {
101+
if err := t.IterateEntriesRecursive(func(entry *TreeEntry) error {
103102
t.entriesRecursive = append(t.entriesRecursive, entry)
104103
return nil
105104
}, extraArgs); err != nil {
@@ -112,18 +111,18 @@ func (t *Tree) listEntriesRecursive(ctx context.Context, extraArgs TrustedCmdArg
112111
}
113112

114113
// ListEntriesRecursiveFast returns all entries of current tree recursively including all subtrees, no size
115-
func (t *Tree) ListEntriesRecursiveFast(ctx context.Context) (Entries, error) {
116-
return t.listEntriesRecursive(ctx, nil)
114+
func (t *Tree) ListEntriesRecursiveFast() (Entries, error) {
115+
return t.listEntriesRecursive(nil)
117116
}
118117

119118
// ListEntriesRecursiveWithSize returns all entries of current tree recursively including all subtrees, with size
120-
func (t *Tree) ListEntriesRecursiveWithSize(ctx context.Context) (Entries, error) {
121-
return t.listEntriesRecursive(ctx, TrustedCmdArgs{"--long"})
119+
func (t *Tree) ListEntriesRecursiveWithSize() (Entries, error) {
120+
return t.listEntriesRecursive(TrustedCmdArgs{"--long"})
122121
}
123122

124123
// IterateEntriesRecursive returns iterate entries of current tree recursively including all subtrees
125124
// extraArgs could be "-l" to get the size, which is slower
126-
func (t *Tree) IterateEntriesRecursive(ctx context.Context, f func(entry *TreeEntry) error, extraArgs TrustedCmdArgs) error {
125+
func (t *Tree) IterateEntriesRecursive(f func(entry *TreeEntry) error, extraArgs TrustedCmdArgs) error {
127126
reader, writer := io.Pipe()
128127
done := make(chan error)
129128

@@ -154,8 +153,8 @@ func (t *Tree) IterateEntriesRecursive(ctx context.Context, f func(entry *TreeEn
154153
}
155154

156155
select {
157-
case <-ctx.Done():
158-
return ctx.Err()
156+
case <-t.repo.Ctx.Done():
157+
return t.repo.Ctx.Err()
159158
case runErr := <-done:
160159
return runErr
161160
default:

routers/web/repo/treelist.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ func TreeList(ctx *context.Context) {
2121
return
2222
}
2323

24-
entries, err := tree.ListEntriesRecursiveFast(ctx)
24+
entries, err := tree.ListEntriesRecursiveFast()
2525
if err != nil {
2626
ctx.ServerError("ListEntriesRecursiveFast", err)
2727
return

services/repository/files/tree.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ func GetTreeBySHA(ctx context.Context, repo *repo_model.Repository, gitRepo *git
4747
tree.URL = repo.APIURL() + "/git/trees/" + url.PathEscape(tree.SHA)
4848
var entries git.Entries
4949
if recursive {
50-
entries, err = gitTree.ListEntriesRecursiveWithSize(ctx)
50+
entries, err = gitTree.ListEntriesRecursiveWithSize()
5151
} else {
5252
entries, err = gitTree.ListEntries()
5353
}

0 commit comments

Comments
 (0)