]> source.dussan.org Git - gitea.git/commitdiff
Unexport git.GlobalCommandArgs (#18376)
author6543 <6543@obermui.de>
Tue, 25 Jan 2022 18:15:58 +0000 (19:15 +0100)
committerGitHub <noreply@github.com>
Tue, 25 Jan 2022 18:15:58 +0000 (18:15 +0000)
Unexport the git.GlobalCommandArgs variable.

integrations/git_clone_wiki_test.go
integrations/git_helper_for_declarative_test.go
integrations/git_test.go
modules/git/command.go
modules/git/commit.go
modules/git/git.go
modules/git/lfs.go
modules/git/repo.go

index 16cee254bcf7cc53fa292c8b9c58fff6bd71ef01..a73174f6aaaeca9cf9cd2110b67b6d21e051e4d9 100644 (file)
@@ -41,7 +41,7 @@ func TestRepoCloneWiki(t *testing.T) {
                u, _ = url.Parse(r)
                u.User = url.UserPassword("user2", userPassword)
                t.Run("Clone", func(t *testing.T) {
-                       assert.NoError(t, git.CloneWithArgs(context.Background(), u.String(), dstPath, allowLFSFilters(), git.CloneRepoOptions{}))
+                       assert.NoError(t, git.CloneWithArgs(context.Background(), u.String(), dstPath, git.AllowLFSFiltersArgs(), git.CloneRepoOptions{}))
                        assertFileEqual(t, filepath.Join(dstPath, "Home.md"), []byte("# Home page\n\nThis is the home page!\n"))
                        assertFileExist(t, filepath.Join(dstPath, "Page-With-Image.md"))
                        assertFileExist(t, filepath.Join(dstPath, "Page-With-Spaced-Name.md"))
index de96f633c0425e07fd52b925d85d9dd9ede09cc6..e1b6b779e9629ee4357beafbe45376f820ef5536 100644 (file)
@@ -14,7 +14,6 @@ import (
        "path"
        "path/filepath"
        "strconv"
-       "strings"
        "testing"
        "time"
 
@@ -60,21 +59,6 @@ func createSSHUrl(gitPath string, u *url.URL) *url.URL {
        return &u2
 }
 
-func allowLFSFilters() []string {
-       // Now here we should explicitly allow lfs filters to run
-       filteredLFSGlobalArgs := make([]string, len(git.GlobalCommandArgs))
-       j := 0
-       for _, arg := range git.GlobalCommandArgs {
-               if strings.Contains(arg, "lfs") {
-                       j--
-               } else {
-                       filteredLFSGlobalArgs[j] = arg
-                       j++
-               }
-       }
-       return filteredLFSGlobalArgs[:j]
-}
-
 func onGiteaRunTB(t testing.TB, callback func(testing.TB, *url.URL), prepare ...bool) {
        if len(prepare) == 0 || prepare[0] {
                defer prepareTestEnv(t, 1)()
@@ -115,7 +99,7 @@ func onGiteaRun(t *testing.T, callback func(*testing.T, *url.URL), prepare ...bo
 
 func doGitClone(dstLocalPath string, u *url.URL) func(*testing.T) {
        return func(t *testing.T) {
-               assert.NoError(t, git.CloneWithArgs(context.Background(), u.String(), dstLocalPath, allowLFSFilters(), git.CloneRepoOptions{}))
+               assert.NoError(t, git.CloneWithArgs(context.Background(), u.String(), dstLocalPath, git.AllowLFSFiltersArgs(), git.CloneRepoOptions{}))
                exist, err := util.IsExist(filepath.Join(dstLocalPath, "README.md"))
                assert.NoError(t, err)
                assert.True(t, exist)
@@ -124,7 +108,7 @@ func doGitClone(dstLocalPath string, u *url.URL) func(*testing.T) {
 
 func doPartialGitClone(dstLocalPath string, u *url.URL) func(*testing.T) {
        return func(t *testing.T) {
-               assert.NoError(t, git.CloneWithArgs(context.Background(), u.String(), dstLocalPath, allowLFSFilters(), git.CloneRepoOptions{
+               assert.NoError(t, git.CloneWithArgs(context.Background(), u.String(), dstLocalPath, git.AllowLFSFiltersArgs(), git.CloneRepoOptions{
                        Filter: "blob:none",
                }))
                exist, err := util.IsExist(filepath.Join(dstLocalPath, "README.md"))
@@ -197,7 +181,7 @@ func doGitCreateBranch(dstPath, branch string) func(*testing.T) {
 
 func doGitCheckoutBranch(dstPath string, args ...string) func(*testing.T) {
        return func(t *testing.T) {
-               _, err := git.NewCommandNoGlobals(append(append(allowLFSFilters(), "checkout"), args...)...).RunInDir(dstPath)
+               _, err := git.NewCommandNoGlobals(append(append(git.AllowLFSFiltersArgs(), "checkout"), args...)...).RunInDir(dstPath)
                assert.NoError(t, err)
        }
 }
@@ -211,7 +195,7 @@ func doGitMerge(dstPath string, args ...string) func(*testing.T) {
 
 func doGitPull(dstPath string, args ...string) func(*testing.T) {
        return func(t *testing.T) {
-               _, err := git.NewCommandNoGlobals(append(append(allowLFSFilters(), "pull"), args...)...).RunInDir(dstPath)
+               _, err := git.NewCommandNoGlobals(append(append(git.AllowLFSFiltersArgs(), "pull"), args...)...).RunInDir(dstPath)
                assert.NoError(t, err)
        }
 }
index 93ff9d25433809c531bd61405ef8dc1962f7fab5..e5a85eb756cd94493e4fa7f754fab72c6f7622bc 100644 (file)
@@ -167,7 +167,7 @@ func lfsCommitAndPushTest(t *testing.T, dstPath string) (littleLFS, bigLFS strin
                err = git.AddChanges(dstPath, false, ".gitattributes")
                assert.NoError(t, err)
 
-               err = git.CommitChangesWithArgs(dstPath, allowLFSFilters(), git.CommitChangesOptions{
+               err = git.CommitChangesWithArgs(dstPath, git.AllowLFSFiltersArgs(), git.CommitChangesOptions{
                        Committer: &git.Signature{
                                Email: "user2@example.com",
                                Name:  "User Two",
@@ -346,7 +346,7 @@ func generateCommitWithNewData(size int, repoPath, email, fullName, prefix strin
 
        // Commit
        // Now here we should explicitly allow lfs filters to run
-       globalArgs := allowLFSFilters()
+       globalArgs := git.AllowLFSFiltersArgs()
        err = git.AddChangesWithArgs(repoPath, globalArgs, false, filepath.Base(tmpFile.Name()))
        if err != nil {
                return "", err
index 3cf85c2d85209c251163d8fc1ea2d87f2efc5930..e8afaa0e46c16fcf71667f08316af6c4f9a9ddfa 100644 (file)
@@ -20,8 +20,8 @@ import (
 )
 
 var (
-       // GlobalCommandArgs global command args for external package setting
-       GlobalCommandArgs []string
+       // globalCommandArgs global command args for external package setting
+       globalCommandArgs []string
 
        // defaultCommandExecutionTimeout default command execution timeout duration
        defaultCommandExecutionTimeout = 360 * time.Second
@@ -52,9 +52,9 @@ func NewCommand(args ...string) *Command {
 
 // NewCommandContext creates and returns a new Git Command based on given command and arguments.
 func NewCommandContext(ctx context.Context, args ...string) *Command {
-       // Make an explicit copy of GlobalCommandArgs, otherwise append might overwrite it
-       cargs := make([]string, len(GlobalCommandArgs))
-       copy(cargs, GlobalCommandArgs)
+       // Make an explicit copy of globalCommandArgs, otherwise append might overwrite it
+       cargs := make([]string, len(globalCommandArgs))
+       copy(cargs, globalCommandArgs)
        return &Command{
                name:          GitExecutable,
                args:          append(cargs, args...),
@@ -278,3 +278,19 @@ func (c *Command) RunTimeout(timeout time.Duration) (string, error) {
 func (c *Command) Run() (string, error) {
        return c.RunTimeout(-1)
 }
+
+// AllowLFSFiltersArgs return globalCommandArgs with lfs filter, it should only be used for tests
+func AllowLFSFiltersArgs() []string {
+       // Now here we should explicitly allow lfs filters to run
+       filteredLFSGlobalArgs := make([]string, len(globalCommandArgs))
+       j := 0
+       for _, arg := range globalCommandArgs {
+               if strings.Contains(arg, "lfs") {
+                       j--
+               } else {
+                       filteredLFSGlobalArgs[j] = arg
+                       j++
+               }
+       }
+       return filteredLFSGlobalArgs[:j]
+}
index 0ba53897f5d5ee01d55ef6d8c598c8276ec9bf93..37b2e71cc052ce1ca1023dcfb57cb042f8e760ca 100644 (file)
@@ -84,7 +84,7 @@ func (c *Commit) GetCommitByPath(relpath string) (*Commit, error) {
 
 // AddChanges marks local changes to be ready for commit.
 func AddChanges(repoPath string, all bool, files ...string) error {
-       return AddChangesWithArgs(repoPath, GlobalCommandArgs, all, files...)
+       return AddChangesWithArgs(repoPath, globalCommandArgs, all, files...)
 }
 
 // AddChangesWithArgs marks local changes to be ready for commit.
@@ -108,8 +108,8 @@ type CommitChangesOptions struct {
 // CommitChanges commits local changes with given committer, author and message.
 // If author is nil, it will be the same as committer.
 func CommitChanges(repoPath string, opts CommitChangesOptions) error {
-       cargs := make([]string, len(GlobalCommandArgs))
-       copy(cargs, GlobalCommandArgs)
+       cargs := make([]string, len(globalCommandArgs))
+       copy(cargs, globalCommandArgs)
        return CommitChangesWithArgs(repoPath, cargs, opts)
 }
 
index 294d33f916bccedbb54f1ccf4d91970a9b9788ca..217e6955c2bc28a1faff837eca3b3b7a7f9bb9bb 100644 (file)
@@ -134,21 +134,21 @@ func Init(ctx context.Context) error {
        }
 
        // force cleanup args
-       GlobalCommandArgs = []string{}
+       globalCommandArgs = []string{}
 
        if CheckGitVersionAtLeast("2.9") == nil {
                // Explicitly disable credential helper, otherwise Git credentials might leak
-               GlobalCommandArgs = append(GlobalCommandArgs, "-c", "credential.helper=")
+               globalCommandArgs = append(globalCommandArgs, "-c", "credential.helper=")
        }
 
        // Since git wire protocol has been released from git v2.18
        if setting.Git.EnableAutoGitWireProtocol && CheckGitVersionAtLeast("2.18") == nil {
-               GlobalCommandArgs = append(GlobalCommandArgs, "-c", "protocol.version=2")
+               globalCommandArgs = append(globalCommandArgs, "-c", "protocol.version=2")
        }
 
        // By default partial clones are disabled, enable them from git v2.22
        if !setting.Git.DisablePartialClone && CheckGitVersionAtLeast("2.22") == nil {
-               GlobalCommandArgs = append(GlobalCommandArgs, "-c", "uploadpack.allowfilter=true")
+               globalCommandArgs = append(globalCommandArgs, "-c", "uploadpack.allowfilter=true")
        }
 
        // Save current git version on init to gitVersion otherwise it would require an RWMutex
@@ -213,7 +213,7 @@ func Init(ctx context.Context) error {
                if err := checkAndSetConfig("core.protectntfs", "false", true); err != nil {
                        return err
                }
-               GlobalCommandArgs = append(GlobalCommandArgs, "-c", "core.protectntfs=false")
+               globalCommandArgs = append(globalCommandArgs, "-c", "core.protectntfs=false")
        }
        return nil
 }
index 3a809d393d23a9ef4c7de5e9fb682a24ab2cdc9a..cdd9d15b2e869b5a11296ec322b7e81da1c90846 100644 (file)
@@ -29,7 +29,7 @@ func CheckLFSVersion() {
                        logger.Error("LFS server support needs at least Git v2.1.2")
                } else {
                        once.Do(func() {
-                               GlobalCommandArgs = append(GlobalCommandArgs, "-c", "filter.lfs.required=",
+                               globalCommandArgs = append(globalCommandArgs, "-c", "filter.lfs.required=",
                                        "-c", "filter.lfs.smudge=", "-c", "filter.lfs.clean=")
                        })
                }
index 5636405118fdac5182c3f9582dd5ad6131b8dc8d..663e13dc18fff24949b9fe1e3d39a986fbb4cb52 100644 (file)
@@ -106,8 +106,8 @@ type CloneRepoOptions struct {
 
 // Clone clones original repository to target path.
 func Clone(ctx context.Context, from, to string, opts CloneRepoOptions) error {
-       cargs := make([]string, len(GlobalCommandArgs))
-       copy(cargs, GlobalCommandArgs)
+       cargs := make([]string, len(globalCommandArgs))
+       copy(cargs, globalCommandArgs)
        return CloneWithArgs(ctx, from, to, cargs, opts)
 }