go get 比较大的包时会很慢, 可能几分钟或更长, 让人误以为卡死了.
修改 go 源码包,让 go get 显示进度。

  1. 修改 git clone 命令, 添加 –progress 选项, 使其输出进度
    找到如下代码, createdCmd 字段值修改为 clone –progress {repo} {dir}
    其它命令 hg, svn…添加进度方法类似
1
2
3
4
5
6
7
// vcsGit describes how to use Git.
var vcsGit = &vcsCmd{
 name: "Git",
 cmd:  "git",
 createCmd:   "clone {repo} {dir}", // 此处修改为 clone --progress {repo} {dir}
 downloadCmd: "pull --ff-only"
}

2.修改 cmd.Run()执行的地方, 将输出定位到标准输出流上找到 run1()方法, 在 cmd.Stderr = &buf 下添加两行, 如下:

var buf bytes.Buffer
cmd.Stdout = &buf
cmd.Stderr = &buf
cmd.Stdout = os.Stdout // 重定向标准输出
cmd.Stderr = os.Stderr // 重定向标准输出
err = cmd.Run()

3.执行 golang 源码 src 下的 all.bash 重新编译 golang, 编译要些时间, 编译完后使用 go get 会显示拉取进度