@@ -239,13 +239,18 @@ func (repo *Repository) CommitsByFileAndRange(opts CommitsByFileAndRangeOptions)
239
239
}()
240
240
go func () {
241
241
stderr := strings.Builder {}
242
- gitCmd := NewCommand ("--no-pager" , "log" ).
243
- AddOptionFormat ("--pretty=format:%%H" ).
244
- AddOptionFormat ("--max-count=%d" , setting .Git .CommitsRangeSize ).
245
- AddOptionFormat ("--skip=%d" , (opts .Page - 1 )* setting .Git .CommitsRangeSize )
246
- if opts .FollowRename {
247
- gitCmd .AddOptionValues ("--follow" )
242
+ var gitCmd * Command
243
+
244
+ if ! opts .FollowRename {
245
+ gitCmd = NewCommand ("rev-list" )
246
+ } else {
247
+ gitCmd = NewCommand ("--no-pager" , "log" ).
248
+ AddOptionFormat ("--pretty=format:%%H" ).
249
+ AddOptionFormat ("--follow" )
248
250
}
251
+ gitCmd .AddOptionFormat ("--max-count=%d" , setting .Git .CommitsRangeSize ).
252
+ AddOptionFormat ("--skip=%d" , (opts .Page - 1 )* setting .Git .CommitsRangeSize )
253
+
249
254
gitCmd .AddDynamicArguments (opts .Revision )
250
255
251
256
if opts .Not != "" {
@@ -264,7 +269,8 @@ func (repo *Repository) CommitsByFileAndRange(opts CommitsByFileAndRangeOptions)
264
269
Stdout : stdoutWriter ,
265
270
Stderr : & stderr ,
266
271
})
267
- if err != nil && err != io .ErrUnexpectedEOF {
272
+
273
+ if err != nil && ! (opts .FollowRename && err == io .ErrUnexpectedEOF ) {
268
274
_ = stdoutWriter .CloseWithError (ConcatenateError (err , (& stderr ).String ()))
269
275
} else {
270
276
_ = stdoutWriter .Close ()
@@ -281,7 +287,7 @@ func (repo *Repository) CommitsByFileAndRange(opts CommitsByFileAndRangeOptions)
281
287
shaline := make ([]byte , length + 1 )
282
288
for {
283
289
n , err := io .ReadFull (stdoutReader , shaline )
284
- if (err != nil && err != io .ErrUnexpectedEOF ) || n < length {
290
+ if (err != nil && ! ( opts . FollowRename && err == io .ErrUnexpectedEOF ) ) || n < length {
285
291
if err == io .EOF {
286
292
err = nil
287
293
}
0 commit comments