Skip to content

Commit 7bdf686

Browse files
committed
improve the code
1 parent 293698d commit 7bdf686

File tree

1 file changed

+13
-15
lines changed

1 file changed

+13
-15
lines changed

modules/git/tree_nogogit.go

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -99,16 +99,16 @@ func (t *Tree) listEntriesRecursive(ctx context.Context, extraArgs TrustedCmdArg
9999
}
100100

101101
t.entriesRecursive = make([]*TreeEntry, 0)
102-
err := t.iterateEntriesRecursive(func(entry *TreeEntry) error {
103-
select {
104-
case <-ctx.Done():
105-
return ctx.Err()
106-
default:
107-
}
102+
if err := t.iterateEntriesRecursive(ctx, func(entry *TreeEntry) error {
108103
t.entriesRecursive = append(t.entriesRecursive, entry)
109104
return nil
110-
}, extraArgs)
111-
return t.entriesRecursive, err
105+
}, extraArgs); err != nil {
106+
t.entriesRecursive = nil
107+
return nil, err
108+
}
109+
110+
t.entriesRecursiveParsed = true
111+
return t.entriesRecursive, nil
112112
}
113113

114114
// ListEntriesRecursiveFast returns all entries of current tree recursively including all subtrees, no size
@@ -123,11 +123,7 @@ func (t *Tree) ListEntriesRecursiveWithSize(ctx context.Context) (Entries, error
123123

124124
// iterateEntriesRecursive returns iterate entries of current tree recursively including all subtrees
125125
// extraArgs could be "-l" to get the size, which is slower
126-
func (t *Tree) iterateEntriesRecursive(f func(entry *TreeEntry) error, extraArgs TrustedCmdArgs) error {
127-
if t.entriesRecursiveParsed {
128-
return nil
129-
}
130-
126+
func (t *Tree) iterateEntriesRecursive(ctx context.Context, f func(entry *TreeEntry) error, extraArgs TrustedCmdArgs) error {
131127
reader, writer := io.Pipe()
132128
done := make(chan error)
133129

@@ -151,9 +147,12 @@ func (t *Tree) iterateEntriesRecursive(f func(entry *TreeEntry) error, extraArgs
151147
if err := scanner.Err(); err != nil {
152148
return err
153149
}
150+
154151
data := scanner.Bytes()
155152
if err := iterateTreeEntries(data, t, func(entry *TreeEntry) error {
156153
select {
154+
case <-ctx.Done():
155+
return ctx.Err()
157156
case runErr := <-done:
158157
return runErr
159158
default:
@@ -163,10 +162,9 @@ func (t *Tree) iterateEntriesRecursive(f func(entry *TreeEntry) error, extraArgs
163162
return err
164163
}
165164
}
166-
t.entriesRecursiveParsed = true
167165
return nil
168166
}
169167

170168
func (t *Tree) IterateEntriesWithSize(f func(*TreeEntry) error) error {
171-
return t.iterateEntriesRecursive(f, TrustedCmdArgs{"--long"})
169+
return t.iterateEntriesRecursive(context.Background(), f, TrustedCmdArgs{"--long"})
172170
}

0 commit comments

Comments
 (0)