【发布时间】:2014-07-26 21:39:37
【问题描述】:
阅读前:我不想做恶意的事情,而是建立一个工具链来克服go get的缺陷。
我想要一个允许以下操作的设置:
- 我有一组域,例如 github.com、bitbucket.org 等。
- 如果 git 从任何域克隆/推送/拉取远程存储库 域被解析为我的代理的 IP 地址
- 对于任何其他程序,域解析为真实 IP 地址
- 我的代理应该是一个托管/缓存存储库的程序,如果它们不在缓存中,则从真实目标克隆它们。这个程序应该用 Go 编写
git 命令必须正常使用。 Git 配置可能会改变。
我们的想法是让团队的所有开发计算机都以这种方式配置,这样任何 外部存储库实际上是代理上的克隆。可以集中管理该克隆(特殊更改、上游合并等),而不会影响导入路径。
如何设置 DNS 伪造? 必须如何构建代理才能正确使用 git?
【问题讨论】:
-
为什么不直接使用来自there 的
get.go和vcs.go编写mygo get?由于某些未知的原因,人们倾向于将go get工具视为灌输给他们使用的东西,但这是错误的:如果该工具不适合您,请编写另一个有效的工具。 -
另一个建议:没有必要搞乱DNS。导入路径除了指定不同的包之外没有任何语义含义。因此,您可以使用将导入路径映射到源代码存储库的任何类型的数据库。
-
@kostix 我知道我可以编写另一个 go get 替代方法以及导入路径是什么。然而,这不是这里的问题。我只是想走上面提到的路线。
-
您不需要弄乱 DNS - 您只需设置一个 git 代理即可完成您的工作。或者您可以在 /etc/hosts 或类似的简单内容中定义您的代理。话虽如此,与仅将 go get 包装在您自己的命令中或使用诸如 godep 之类的东西相比,您的建议在所需的工作方面非常过分。
-
重新 git 代理 - 这是配置代理的示例。 stackoverflow.com/questions/783811/…