【问题标题】:Go mod replace dependency with private forkGo mod 用私有分支替换依赖
【发布时间】:2021-06-29 09:50:15
【问题描述】:

我将依赖添加到go.mod:

require (
    github.com/labstack/echo/v4 v4.3.1
)

replace (
    github.com/labstack/echo/v4 => example.com/echo/v4.git v4.3.1
)

并得到像replace example.com/echo.git: version "v4.3.1" invalid: module contains a go.mod file, so major version must be compatible: should be v0 or v1, not v4 这样的错误。存储库中存在具有所需版本的标签。

虽然我尝试使用类似 v1.2.1-0.20210520145606-2defe74d39f0 的版本,但是当我将替换部分设置为:

replace (
    github.com/labstack/echo/v4 => example.com/echo/v4.git v1.2.1-0.20210520145606-2defe74d39f0
)

我收到与私有 git 服务器相关的错误 errno=Connection refused

您能否告知我做错了什么以及如何用我的私人分叉替换依赖项?

【问题讨论】:

  • 我认为你不需要指定.git
  • @Matteo without .git 我也得到一个错误:version "v4.3.1" invalid: unknown revision echo/v4.3.1
  • 你的仓库名称实际上是v4.git吗?导入路径的v4部分只是原始repo中的一个标签,它不对应实际的路径或repo名称。
  • @JimB 这也是我困惑的地方。如果我将replace 部分更改为github.com/labstack/echo => bucket.digitalarsenal.net/elpaso/backend/libs/echo v4.3.1,它也无济于事。 replace example.com/echo: version "v4.3.1" invalid: unknown revision libs/echo/v4.3.1。但是这个版本的标签是存在的。
  • @Ole 我猜这个错误实际上来自 sum.golang.org。我已经留下了这个效果的答案,但如果没有,请 edit 提供运行 go get 的完整输出。

标签: git go go-modules


【解决方案1】:
  • 确保您的回购路径准确无误。 v4.git 表示 repo 被称为 v4;如果是这样就可以,但如果不是,请将其替换为 repo 的正确名称并在其后保留 v4.x.x 标记。

  • 如果分叉是私有的,那么 sum.golang.org 可能无法访问它。确保将 GOPRIVATE 设置为您的私有分支,以便 Go 不会尝试获取校验和。

    go env -w GOPRIVATE=example.com
    

【讨论】:

  • 感谢您的建议!当我在替换部分github.com/labstack/echo/v4 => example.com/echo.git v4.3.1 中指定了正确的 repo 路径而没有任何有线足够时,我收到一个错误:replace example.com/echo.git: version "v4.3.1" invalid: module contains a go.mod file, so major version must be compatible: should be v0 or v1, not v4。标签 4.3.1 存在于 repo 中,我仔细检查了这一点。
  • 在我的叉子go.mod 文件中我有module github.com/labstack/echo/v4
【解决方案2】:

如果替换 repo 托管在 example.com/echo 的 Git 存储库中,则替换的路径可能应该是 example.com/echo.git/v4

replace (
    github.com/labstack/echo/v4 v4.3.1 => example.com/echo.git/v4 v4.3.1
)

如果example.com 服务器服务于go-import metadata,那么您可以完全省略.git 后缀:

replace (
    github.com/labstack/echo/v4 v4.3.1 => example.com/echo/v4 v4.3.1
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-16
    • 2013-10-17
    • 2021-05-23
    • 2011-09-23
    • 1970-01-01
    相关资源
    最近更新 更多