微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Go mod用私有叉替换依赖

如何解决Go mod用私有叉替换依赖

我将依赖项添加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

你能告诉我我做错了什么以及我如何用我的私人叉替换依赖吗?

解决方法

  • 确保您的回购路径准确无误。 v4.git 表示 repo 被称为 v4;如果这是真的,那没问题,但如果没有用正确的 repo 名称替换它,并在它后面保留 v4.x.x 标签。

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

    go env -w GOPRIVATE=example.com
    
,

如果替换存储库托管在位于 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
)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。