mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-03 20:36:07 +01:00 
			
		
		
		
	Fix commit range paging (#32944)
This commit is contained in:
		@@ -216,8 +216,6 @@ type CommitsByFileAndRangeOptions struct {
 | 
			
		||||
 | 
			
		||||
// CommitsByFileAndRange return the commits according revision file and the page
 | 
			
		||||
func (repo *Repository) CommitsByFileAndRange(opts CommitsByFileAndRangeOptions) ([]*Commit, error) {
 | 
			
		||||
	skip := (opts.Page - 1) * setting.Git.CommitsRangeSize
 | 
			
		||||
 | 
			
		||||
	stdoutReader, stdoutWriter := io.Pipe()
 | 
			
		||||
	defer func() {
 | 
			
		||||
		_ = stdoutReader.Close()
 | 
			
		||||
@@ -226,8 +224,8 @@ func (repo *Repository) CommitsByFileAndRange(opts CommitsByFileAndRangeOptions)
 | 
			
		||||
	go func() {
 | 
			
		||||
		stderr := strings.Builder{}
 | 
			
		||||
		gitCmd := NewCommand(repo.Ctx, "rev-list").
 | 
			
		||||
			AddOptionFormat("--max-count=%d", setting.Git.CommitsRangeSize*opts.Page).
 | 
			
		||||
			AddOptionFormat("--skip=%d", skip)
 | 
			
		||||
			AddOptionFormat("--max-count=%d", setting.Git.CommitsRangeSize).
 | 
			
		||||
			AddOptionFormat("--skip=%d", (opts.Page-1)*setting.Git.CommitsRangeSize)
 | 
			
		||||
		gitCmd.AddDynamicArguments(opts.Revision)
 | 
			
		||||
 | 
			
		||||
		if opts.Not != "" {
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,11 @@ import (
 | 
			
		||||
	"path/filepath"
 | 
			
		||||
	"testing"
 | 
			
		||||
 | 
			
		||||
	"code.gitea.io/gitea/modules/setting"
 | 
			
		||||
	"code.gitea.io/gitea/modules/test"
 | 
			
		||||
 | 
			
		||||
	"github.com/stretchr/testify/assert"
 | 
			
		||||
	"github.com/stretchr/testify/require"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func TestRepository_GetCommitBranches(t *testing.T) {
 | 
			
		||||
@@ -126,3 +130,21 @@ func TestGetRefCommitID(t *testing.T) {
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestCommitsByFileAndRange(t *testing.T) {
 | 
			
		||||
	defer test.MockVariableValue(&setting.Git.CommitsRangeSize, 2)()
 | 
			
		||||
 | 
			
		||||
	bareRepo1Path := filepath.Join(testReposDir, "repo1_bare")
 | 
			
		||||
	bareRepo1, err := openRepositoryWithDefaultContext(bareRepo1Path)
 | 
			
		||||
	require.NoError(t, err)
 | 
			
		||||
	defer bareRepo1.Close()
 | 
			
		||||
 | 
			
		||||
	// "foo" has 3 commits in "master" branch
 | 
			
		||||
	commits, err := bareRepo1.CommitsByFileAndRange(CommitsByFileAndRangeOptions{Revision: "master", File: "foo", Page: 1})
 | 
			
		||||
	require.NoError(t, err)
 | 
			
		||||
	assert.Len(t, commits, 2)
 | 
			
		||||
 | 
			
		||||
	commits, err = bareRepo1.CommitsByFileAndRange(CommitsByFileAndRangeOptions{Revision: "master", File: "foo", Page: 2})
 | 
			
		||||
	require.NoError(t, err)
 | 
			
		||||
	assert.Len(t, commits, 1)
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user