mirror of
https://github.com/go-gitea/gitea.git
synced 2026-07-23 17:32:39 +00:00
fix(pulls): respect diff.orderFile in diff file tree (#38566)
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
@@ -60,6 +60,11 @@ func runGitDiffTree(ctx context.Context, gitRepo *git.Repository, useMergeBase b
|
||||
cmd := gitcmd.NewCommand("diff-tree", "--raw", "-r", "--root").
|
||||
AddOptionFormat("--find-renames=%s", setting.Git.DiffRenameSimilarityThreshold)
|
||||
|
||||
// HINT: GIT-DIFF-TREE-UI-CONFIG: apply the diff.orderfile explicitly
|
||||
if git.GlobalConfig.DiffOrderFile != "" {
|
||||
cmd.AddOptionFormat("-O%s", git.GlobalConfig.DiffOrderFile)
|
||||
}
|
||||
|
||||
if useMergeBase {
|
||||
cmd.AddArguments("--merge-base")
|
||||
}
|
||||
|
||||
@@ -4,10 +4,13 @@
|
||||
package gitdiff
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"gitea.dev/modules/git"
|
||||
"gitea.dev/modules/git/gitcmd"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
@@ -217,6 +220,43 @@ func TestGitDiffTree(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestGitDiffTreeRespectsDiffOrderFile(t *testing.T) {
|
||||
gitRepo, err := git.OpenRepositoryLocal("../../modules/git/tests/repos/repo5_pulls")
|
||||
require.NoError(t, err)
|
||||
defer gitRepo.Close()
|
||||
|
||||
testDiffTree := func(t *testing.T) (filePaths []string) {
|
||||
t.Helper()
|
||||
diffTree, err := GetDiffTree(t.Context(), gitRepo, false, "72866af952e98d02a73003501836074b286a78f6", "d8e0bbb45f200e67d9a784ce55bd90821af45ebd")
|
||||
require.NoError(t, err)
|
||||
for _, f := range diffTree.Files {
|
||||
filePaths = append(filePaths, f.HeadPath)
|
||||
}
|
||||
return filePaths
|
||||
}
|
||||
|
||||
t.Run("NoDiffOrderFile", func(t *testing.T) {
|
||||
assert.Equal(t, []string{"LICENSE", "README.md"}, testDiffTree(t))
|
||||
})
|
||||
|
||||
t.Run("GlobalDiffOrderFile", func(t *testing.T) {
|
||||
diffOrderFilePath := filepath.Join(t.TempDir(), "test-diff-order.txt")
|
||||
err = os.WriteFile(diffOrderFilePath, []byte("README.md\nLICENSE\n"), 0o644)
|
||||
require.NoError(t, err)
|
||||
|
||||
_, _, err = gitcmd.NewCommand("config", "set", "--global").AddDynamicArguments("diff.orderFile", diffOrderFilePath).RunStdString(t.Context())
|
||||
require.NoError(t, err)
|
||||
require.NoError(t, git.InitFull())
|
||||
defer func() {
|
||||
_, _, err = gitcmd.NewCommand("config", "unset", "--global").AddDynamicArguments("diff.orderFile").RunStdString(t.Context())
|
||||
require.NoError(t, err)
|
||||
require.NoError(t, git.InitFull())
|
||||
}()
|
||||
|
||||
assert.Equal(t, []string{"README.md", "LICENSE"}, testDiffTree(t))
|
||||
})
|
||||
}
|
||||
|
||||
func TestParseGitDiffTree(t *testing.T) {
|
||||
test := []struct {
|
||||
Name string
|
||||
|
||||
Reference in New Issue
Block a user