Fix datarace on git.GlobalCommandArgs on tests (#9162)
* fix datarace on git.GlobalCommandArgs on tests * fix tests * fix tests * fix tests
This commit is contained in:
parent
9d9e6ac411
commit
7b7d382b8b
5 changed files with 40 additions and 23 deletions
|
@ -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...)
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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")
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue