I insist on Go Get
using go get to download repos hosted on non-github git servers
我就是要用 go get!
众所周知, 使用 git 管理的 golang 代码可以直接使用 go get 下载到 $GOPATH 下面.
例如:
|
|
不过在实践中, 我们遇到了非 Github 的其他仓库, 如
- gitlab
- other private git servers
这时, 在使用 go get
下载时就会遇到各种各样的错误:
|
|
本文解决了非 Github 的其他仓库在使用 go get
时遇到的各种问题, 按照步骤操作后可以正常使用 go get
拉取各种 git 仓库的代码, 亲测有效提升各位 golang 开发者的幸福感 ^_^.
解决方案
为了 go get
时使用 ssh 方式, 只要把 http/https 链接替换成 ssh 协议就好了.
手段是:
|
|
Gitlab
在 shell 下执行:
|
|
验证配置如下:
|
|
测试
|
|
Private git servers
在一些实现的不太标准的私有 Git Server 中, 对 go-import-tag
的实现总是有些小问题, 这里不点名某些 gogs
啊啥的, 建议大家自己搭建的时候尽量绕道走.
所以按照 gitlab 的方法去配置这些 git server 会发现行不通, 比如这样是无效的:
|
|
测试一下:
|
|
这时需要我们在私有的 git 系统中, 比如 https://git.xxx.tm/warrior/scavenger 上看一下系统生成的 SSH Url:
|
|
如法炮制:
|
|
验证配置如下:
|
|
测试
|
|
Reference
https://help.github.com/articles/caching-your-github-password-in-git/
https://git-scm.com/docs/git-config#git-config-urlltbasegtinsteadOf