首页 > 解决方案 > 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。具有所需版本的标签存在于 repo 中。

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

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

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

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

标签: gitgogo-modules

解决方案


  • 确保您的回购路径是准确的。v4.git 表示 repo 被称为 v4;如果这是真的,那没关系,但如果不是用正确的 repo 名称替换它,并在其后保留 v4.xx 标记。

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

    go env -w GOPRIVATE=example.com
    

推荐阅读