【问题标题】:go get using ssh instead of https (NOT on github)去使用 ssh 而不是 https(不在 github 上)
【发布时间】:2021-01-28 03:17:53
【问题描述】:

我们有一个只能通过 ssh/git(没有 https)访问的私有代码存储库,我们希望在那里托管我们的 go 代码/模块。

首先我尝试过:

git config --global url."git@code.internal.local:".insteadOf "https://code.internal.local/"

所以,以下两个都可以正常工作:

  • git clone git@code.internal.local:reponame.git
  • git clone https://code.internal.local/reponame

但是go get code.internal.local/reponame 失败了,因为 go 仍然坚持尝试 https://... 而不是 git。

package code.internal.local/reponame: unrecognized import path "code.internal.local/reponame": https fetch: Get "https://code.internal.local/reponame?go-get=1": dial tcp 192.168.0.5:443: i/o timeout

【问题讨论】:

    标签: git go go-modules


    【解决方案1】:

    我检查了我的 .gitconfig 并找到了这个(对于 github 私人仓库)-

    [url "ssh://git@github.com/"]
            insteadOf = https://github.com/
    

    以上配置对我有用。你也可以尝试在你的项目根目录中创建一个 .netrc 文件,但是应该被推送到远程代码仓库。

    【讨论】:

    • 谢谢,但正如标题中提到的:这不在 github 上。这不是解决方案。
    【解决方案2】:

    问题

    您观察到的行为在go get 文档的"Remote import paths" 部分中有详细说明。 特别是,仅通过查看远程导入路径code.internal.local/reponamego get 无法知道哪个 VCS 以及哪个 URL 用于实际托管该包。

    为了解决这个问题,go get 使用一组 HTTPS(和 HTTP,作为备用,必须显式启用)GET 请求到一组特殊的 URL,这些 URL 由指定的导入路径构造而成。 假定为此类调用提供服务的任何服务都能够以标识要使用的 VCS 和存储库 URL 的回复进行响应。

    可能的解决方案

    如果您正在使用模块,您可以在您的团队方便的地方设置一个专用的“模块代理”(另外,可能部署了许多代理)并让团队成员使用GOPROXY 环境变量指向在方便的情况下。请参阅go help modules 了解更多信息。

    否则,如果您可以放置​​一个网络服务器来响应远程导入路径解析请求,您可以这样做; nginx 和 apache 可以用于它们的库存模块。

    否则您可能需要求助于手动操作。

    【讨论】:

      【解决方案3】:

      我在这里发布了详细答案https://stackoverflow.com/a/65925691/348719

      基本上,您应该在客户端将.git 后缀添加到require,在服务器端添加module。如果没有.git 后缀,go get 将使用 https。

      • 在客户端 (go.mod)(将版本号更改为更正版本):
      require code.internal.local/reponame.git v0.1.0
      

      最好加上go env -w GOPRIVATE=code.internal.local

      • 在服务器 (go.mod)
      module code.internal.local/reponame.git
      

      【讨论】:

        猜你喜欢
        • 2016-06-01
        • 2013-09-02
        • 1970-01-01
        • 1970-01-01
        • 2021-11-10
        • 2020-09-11
        • 2020-08-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多