1、首先附上編譯完成能顯示go get進度的Go包:linux
centos7直接解壓版go:http://pan.baidu.com/s/1mik3cI8git
windows7直接解壓版go:http://pan.baidu.com/s/1jIaxKEEgithub
1、編譯以前修改go get進度顯示:golang
由於beego在github.com上的包有點大, 因此 go get github.com/leanote/leanote/app 會很慢, 這個會執行幾分鐘或更長, 不知道的朋友還覺得卡死了. 找了下 go get 沒有一個選項能夠輸出進度的, 因而決定修改golang源碼(別覺得頗有技術含量, 還不是go代碼?).windows
看了下golang的源碼 src/cmd/go 下是go命令的源碼, 其中, get.go是go get命令的代碼, build.go 是go build的代碼.centos
剛開始走了點彎路, 想着改變get.go來顯示進度, 無果以後想了下, go get 其實就是調用git , hg, svn的命令從倉庫中下載的, 由此思路找到vcs.go(vcs全稱爲version control system), 果真這裏麪包含了調用git, hg, svn的命令. 問題迎刃而解:bash
1. 修改git clone命令, 找到以下代碼, 在createdCmd修改成 clone --progress {repo} {dir}app
其它命令hg, svn...添加進度方法相似svn
// 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. 重定向輸出流ui
找到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()
Ok, 搞定, 接下來執行golang源碼 src下的 all.bash 從新編譯golang, 編譯要些時間, 編譯完後使用go get 試試:
看到進度條就不用擔憂了吧.
以前修改golang源碼使其關閉變量未使用, 包未使用的錯誤 :
關閉golang的 variable declared but not used 和 package imported but not used
二:window7下面編譯Go:
複製一份go源碼:
設置GOROOT_BOOTSTRAP=C:\Go1.7
環境變量設置完畢須要重啓生效!!!
下載安裝:MinGW - Minimalist GNU for Windows
https://sourceforge.net/projects/mingw/
也能夠直接下載TDM-GCC MinGW Compiler
添加到path中:
set PATH=.;C:\TDM-GCC-64\bin\
三:Centos7下面編譯Go:
linux同理,執行編譯腳本爲src下的sh all.bash
編譯完畢,執行go get: