新手问题 golang 使用os.exec执行git clone命令

windzhu0514 · 2019年03月05日 · 最后由 gomon 回复于 2019年07月16日 · 662 次阅读

终端使用 git clone,如下

$ git clone https://github.com/windzhu0514/cmd c:/cmd
Cloning into 'c:/cmd'...
remote: Enumerating objects: 6, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 6 (delta 1), reused 6 (delta 1), pack-reused 0
Unpacking objects: 100% (6/6), done.

使用 golang 的 os.exec 执行 git clone 命令,如下

func TestExec(t *testing.T) {
    cmd := exec.Command("git", "clone", "https://github.com/windzhu0514/cmd", "c:/cmd")
    cmd.Stdout = os.Stdout
    cmd.Stderr = os.Stderr
    cmd.Run()
}

// output:
Cloning into 'c:/cmd'...

Cloning into 'c:/cmd'...下面的几行不会打印出来,是什么原因?

更多原创文章干货分享,请关注公众号
  • 加微信实战群请加微信(注明:实战群):gocnio

求大神指点

cmd.Start() 不要用 run

你这命令就不对吧,exec.Command()最后一个参数"c:/cmd"这是啥意思?应该去掉这个参数,或者说替换为本地的一个目录 git clone 命令最后一个参数是目录,没有的话默认就是 clone 到当前目录

加一个--progress 参数,如果没有连接到 tty,git 不会打印其它输出

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册