中心化的依赖管理比如 npm、pip 之类都很好建 mirror,有 mirror 后本地拉依赖、CI 构建速度都很好保证。
但 Golang 的依赖是分布式的,依赖多的话 mirror 很难建,各包管理工具也最多支持单个包的 mirror 设置。
同时所依赖的
github.com 、
golang.org 在特殊时期很难保证访问的可靠性,一开大会可能就没法工作了。
现在我常使用的办法是直接把 vendor 直接提交的代码仓库,但是感觉这个办法很脏,遇到需要更新依赖的时候一大片绿。
所以我写了个代理 Gotit 尝试解决这个问题,原理就是中间人 + Git 仓库缓存。将包管理工具的代理设置配到 Gotit,Gotit 就能自动帮你拉并缓存用到的 Golang 包。
一方面有缓存的话也可以加快 CI 构建的速度;另一方面如果使用的人多,缓存的包也越多,如果外网断掉你需要的包也可能在代理的缓存中找到,不至于工作停摆。
具体使用办法可以查看项目 README
https://github.com/faceair/gotit项目目前只是验证了可行性,对程序的可靠性还不敢做太多保证,欢迎多多试用有问题可以提 issue ~
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/463892
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.