【问题标题】:go get on forked github repo got "unexpected module path" errorgo get on forked github repo got "unexpected module path" 错误
【发布时间】:2019-05-29 21:49:47
【问题描述】:

我目前正在使用这个 repo https://github.com/awslabs/goformation 在 AWS Cloudformation 上工作。因为我做了一些自定义所以我做了一个 fork https://github.com/vrealzhou/goformation

现在在我的另一个项目(使用 go 模块)中,我尝试使用 go get github.com/vrealzhou/goformation@v2.3.1,但出现此错误:

go: github.com/vrealzhou/goformation@v0.0.0-20190513073615-ff3b65adb278: parsing go.mod: unexpected module path "github.com/awslabs/goformation"
go: error loading module requirements

有谁知道这个问题的原因以及如何解决这个问题?谢谢

【问题讨论】:

  • 猜你只改master分支,不改tag v2.3.1?
  • 你一个 github fork 是一个新的包,具有新的导入路径,并且 100% 与原始包无关。你必须重写你的 fork 中的所有导入。
  • @zzn 我的更改在 add_features 分支中并标记为 v2.3.1。您可以查看我的来源。
  • @Volker 我已经用标签 v2.3.2 完成了你在 master 中所说的操作,但是当我运行 go get github.com/vrealzhou/goformation@v2.3.2 时仍然出现类似的错误
  • 您可以在您的go.mod 中使用replace 来完成您正在寻找的事情——使用fork 而不更新导入或任何东西。我发布了go.mod 所需更新的答案。

标签: go github go-modules


【解决方案1】:

您可以在 go.mod 中使用 replace 来使用 fork 而不是上游版本。这样,您可以对代码进行任何需要的修改,而无需更新模块路径或导入路径。

具体来说,在这种情况下,您可以在您的 go.mod 中执行以下操作(我通过分叉存储库进行了测试,进行了一些小改动,并确认它出现了):

require github.com/awslabs/goformation v1.4.1

replace github.com/awslabs/goformation => github.com/vrealzhou/goformation master

在您第一次构建或测试时,master 将被您的 fork 的最新伪版本替换,以确保您获得可重复的构建。 replace 需要特定版本才能替换。

【讨论】:

  • 我相信这缺少示例顶部的 module 行。在这种情况下,任何模块名称都可以使用,因为它没有发布
猜你喜欢
  • 1970-01-01
  • 2017-03-24
  • 1970-01-01
  • 2021-02-11
  • 2015-11-20
  • 2021-06-03
  • 1970-01-01
  • 2016-07-08
  • 1970-01-01
相关资源
最近更新 更多