@@ -127,7 +127,7 @@ func (t *Tree) iterateEntriesRecursive(ctx context.Context, f func(entry *TreeEn
127127 reader , writer := io .Pipe ()
128128 done := make (chan error )
129129
130- go func (done chan error , writer * io.PipeWriter , reader * io. PipeReader ) {
130+ go func (t * Tree , done chan error , writer * io.PipeWriter ) {
131131 runErr := NewCommand (t .repo .Ctx , "ls-tree" , "-t" , "-r" ).
132132 AddArguments (extraArgs ... ).
133133 AddDynamicArguments (t .ID .String ()).
@@ -137,10 +137,9 @@ func (t *Tree) iterateEntriesRecursive(ctx context.Context, f func(entry *TreeEn
137137 })
138138
139139 _ = writer .Close ()
140- _ = reader .Close ()
141140
142141 done <- runErr
143- }(done , writer , reader )
142+ }(t , done , writer )
144143
145144 scanner := bufio .NewScanner (reader )
146145 for scanner .Scan () {
@@ -150,13 +149,15 @@ func (t *Tree) iterateEntriesRecursive(ctx context.Context, f func(entry *TreeEn
150149
151150 data := scanner .Bytes ()
152151 if err := iterateTreeEntries (data , t , func (entry * TreeEntry ) error {
152+ if err := f (entry ); err != nil {
153+ return err
154+ }
155+
153156 select {
154157 case <- ctx .Done ():
155158 return ctx .Err ()
156159 case runErr := <- done :
157160 return runErr
158- default :
159- return f (entry )
160161 }
161162 }); err != nil {
162163 return err
@@ -166,5 +167,5 @@ func (t *Tree) iterateEntriesRecursive(ctx context.Context, f func(entry *TreeEn
166167}
167168
168169func (t * Tree ) IterateEntriesWithSize (f func (* TreeEntry ) error ) error {
169- return t .iterateEntriesRecursive (context . Background () , f , TrustedCmdArgs {"--long" })
170+ return t .iterateEntriesRecursive (t . repo . Ctx , f , TrustedCmdArgs {"--long" })
170171}
0 commit comments