@@ -239,13 +239,18 @@ func (repo *Repository) CommitsByFileAndRange(opts CommitsByFileAndRangeOptions)
239239 }()
240240 go func () {
241241 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" )
248250 }
251+ gitCmd .AddOptionFormat ("--max-count=%d" , setting .Git .CommitsRangeSize ).
252+ AddOptionFormat ("--skip=%d" , (opts .Page - 1 )* setting .Git .CommitsRangeSize )
253+
249254 gitCmd .AddDynamicArguments (opts .Revision )
250255
251256 if opts .Not != "" {
@@ -264,7 +269,8 @@ func (repo *Repository) CommitsByFileAndRange(opts CommitsByFileAndRangeOptions)
264269 Stdout : stdoutWriter ,
265270 Stderr : & stderr ,
266271 })
267- if err != nil && err != io .ErrUnexpectedEOF {
272+
273+ if err != nil && ! (opts .FollowRename && err == io .ErrUnexpectedEOF ) {
268274 _ = stdoutWriter .CloseWithError (ConcatenateError (err , (& stderr ).String ()))
269275 } else {
270276 _ = stdoutWriter .Close ()
@@ -281,7 +287,7 @@ func (repo *Repository) CommitsByFileAndRange(opts CommitsByFileAndRangeOptions)
281287 shaline := make ([]byte , length + 1 )
282288 for {
283289 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 {
285291 if err == io .EOF {
286292 err = nil
287293 }
0 commit comments