就要 go get — 私有仓库
文章目录
在开始使用 Golang 之前,从来没有觉得编程能如此的简单。众多的开源库只要 go get
一下就能在自己的项目当中使用了。但是,当我们需要使用一些私有库的时候 go get
会遇到一些问题。不过没有过不去的坎儿,问题总归是会有解决办法的。
0x1 问题
我们在工作中会使用一些私有的代码存储仓库,为了尽可能的保护私有代码,通常只有登录后才能浏览代码。这样,即使是组织内部设置为公开的代码仓库,没有系统账号的游客也是看不见任何的代码的。尽管这样很好的保护了代码,但这让却使得 go get
无法获取需要的包。
0x2 设想
修改服务端代码,代码仓库页面上添加 <meta name="go-import">
来映射 https
的仓库地址替换为 ssh
地址。但是考虑到实际上修改代码仓库服务器的复杂性——权限、代码修改等等,这个方案的实施是相当困难的。
0x3 方案
既然修改代码服务器难以实行,那么不得不考虑替代方案了。修改服务端不成,那就修改客户端。
执行 go get
fetch 代码的时候最终会由 vcs 客户端程序执行,所以我们可以在 vcs 客户端程序执行的时候把 https
转换成 ssh
地址来实现对私有库的获取。对于使用 git 作为 vcs 的场景,我们只需要 添加一行全局配置就能方便的解决这个问题:
当然,这个方案的前提是你正确的配置了 git 能够通过 ssh 协议 clone 代码仓库。
文章作者 疯魔慕薇
上次更新 2017-11-03