diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2019-11-27 08:35:52 +0800 |
---|---|---|
committer | Antoine GIRARD <sapk@users.noreply.github.com> | 2019-11-27 01:35:52 +0100 |
commit | 7b7d382b8b414e7da67dfec7c7e1ef9e0e269d68 (patch) | |
tree | ea2bd9ccb5ba69da61fbf463c4f87409e98307b7 /modules | |
parent | 9d9e6ac4117b8efd2f85fc625a4ccfdcf73c4fc3 (diff) | |
download | gitea-7b7d382b8b414e7da67dfec7c7e1ef9e0e269d68.tar.gz gitea-7b7d382b8b414e7da67dfec7c7e1ef9e0e269d68.zip |
Fix datarace on git.GlobalCommandArgs on tests (#9162)
* fix datarace on git.GlobalCommandArgs on tests
* fix tests
* fix tests
* fix tests
Diffstat (limited to 'modules')
-rw-r--r-- | modules/git/command.go | 8 | ||||
-rw-r--r-- | modules/git/commit.go | 17 | ||||
-rw-r--r-- | modules/git/repo.go | 9 |
3 files changed, 31 insertions, 3 deletions
diff --git a/modules/git/command.go b/modules/git/command.go index 7772abd2d5..65878edb7d 100644 --- a/modules/git/command.go +++ b/modules/git/command.go @@ -52,6 +52,14 @@ func NewCommand(args ...string) *Command { } } +// NewCommandNoGlobals creates and returns a new Git Command based on given command and arguments only with the specify args and don't care global command args +func NewCommandNoGlobals(args ...string) *Command { + return &Command{ + name: GitExecutable, + args: args, + } +} + // AddArguments adds new argument(s) to the command. func (c *Command) AddArguments(args ...string) *Command { c.args = append(c.args, args...) diff --git a/modules/git/commit.go b/modules/git/commit.go index ce55dd55f6..0388d5e9be 100644 --- a/modules/git/commit.go +++ b/modules/git/commit.go @@ -207,7 +207,12 @@ 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 { - cmd := NewCommand("add") + return AddChangesWithArgs(repoPath, GlobalCommandArgs, all, files...) +} + +// AddChangesWithArgs marks local changes to be ready for commit. +func AddChangesWithArgs(repoPath string, gloablArgs []string, all bool, files ...string) error { + cmd := NewCommandNoGlobals(append(gloablArgs, "add")...) if all { cmd.AddArguments("--all") } @@ -226,7 +231,15 @@ 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 { - cmd := NewCommand() + cargs := make([]string, len(GlobalCommandArgs)) + copy(cargs, GlobalCommandArgs) + return CommitChangesWithArgs(repoPath, cargs, opts) +} + +// CommitChangesWithArgs commits local changes with given committer, author and message. +// If author is nil, it will be the same as committer. +func CommitChangesWithArgs(repoPath string, args []string, opts CommitChangesOptions) error { + cmd := NewCommandNoGlobals(args...) if opts.Committer != nil { cmd.AddArguments("-c", "user.name="+opts.Committer.Name, "-c", "user.email="+opts.Committer.Email) } diff --git a/modules/git/repo.go b/modules/git/repo.go index ffca2524be..e277f896bf 100644 --- a/modules/git/repo.go +++ b/modules/git/repo.go @@ -165,12 +165,19 @@ type CloneRepoOptions struct { // Clone clones original repository to target path. func Clone(from, to string, opts CloneRepoOptions) (err error) { + cargs := make([]string, len(GlobalCommandArgs)) + copy(cargs, GlobalCommandArgs) + return CloneWithArgs(from, to, cargs, opts) +} + +// CloneWithArgs original repository to target path. +func CloneWithArgs(from, to string, args []string, opts CloneRepoOptions) (err error) { toDir := path.Dir(to) if err = os.MkdirAll(toDir, os.ModePerm); err != nil { return err } - cmd := NewCommand("clone") + cmd := NewCommandNoGlobals(args...).AddArguments("clone") if opts.Mirror { cmd.AddArguments("--mirror") } |