在线代码库依赖热更新命令示例:
当前自己的github代码已经依赖了第三方开源库,比如 github.com/xdg/stringprep。
当 stringprep 库更新时,我们可能要同步stringprep最新commit的代码到我们自己的go.mod中。
因此需要进行实时更新。
GOSUMDB=off GOPROXY="https://goproxy.io|direct" go get -u -v github.com/xdg/stringprep
GOSUMDB
- 全称为 Go CheckSum Database,用来下载的包的安全性校验问题。
- 包的安全性在使用 GoProxy 之后更容易出现,比如我们引用了一个不安全的 GoProxy 之后然后下载了一个不安全的包,这个时候就出现了安全性问题。对于这种情况,可以通过 GOSUMDB 来对包的哈希值进行校验。
- 当然如果想要关闭哈希校验,可以将 GOSUMDB 设置为 off;如果要对部分包关闭哈希校验,则可以将包的前缀设置到环境变量中 GONOSUMDB 中,设置规则类似 GOPRIVATE。
GOPROXY
- proxy 顾名思义,代理服务器。众所周知,有些 Golang 的 package 在国内是无法直接 go get 的。在之前,我们解决这个问题,一般都是通过设置 http_proxy/https_proxy 来解决。
- GoProxy 相当于官方提供了一种 proxy 的方式让用户来进行包下载。要使用 GoProxy 只需要设置环境变量 GOPROXY 即可。目前公开的 GOPROXY 有:
goproxy.io
goproxy.cn: 由七牛云提供,参考 github repo
go get参数
- -d 只下载不安装
- -f 只有在你包含了 -u 参数的时候才有效,不让 -u 去验证 import 中的每一个都已经获取了,这对于本地 fork 的包特别有用
- -fix 在获取源码之后先运行 fix,然后再去做其他的事情
- -t 同时也下载需要为运行测试所需要的包
- -u 强制使用网络去更新包和它的依赖包
- -v 显示执行的命令