如何将参数正确传递给系统调用(git)?

我正在尝试通过调用 git 来克隆一个 git 存储库syscall。(我知道有git2go但这不是我想要的。我绝对想做一个syscall)


git, lookErr := exec.LookPath("git")


if lookErr != nil {

    fmt.Fprintf(os.Stderr, "%s\n", lookErr)

    os.Exit(126)

}


args := []string{"clone", "http://github.com/some/repo.git"}


var env = os.Environ()


execErr := syscall.Exec(git, args, env)


if execErr != nil {

  panic(execErr)

}

所以我想要执行的是git clone http://github.com/some/repo.git手动执行这个工作就好了。但是当我像上面的代码片段一样在 go 中运行它时,git 失败了:


git: ' http://github.com/some/repo.git ' 不是 git 命令。参见'git --help'。


为什么 git 会将第二个参数解释为另一个命令?它应该是远程<repo>URL,git clone [options] [--] <repo> [<dir>].


如何正确传递参数以便 git 具有预期的行为?


炎炎设计
浏览 196回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go