mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	Unexport git.GlobalCommandArgs (#18376)
Unexport the git.GlobalCommandArgs variable.
This commit is contained in:
		@@ -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]
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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=")
 | 
			
		||||
			})
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user