为了账号安全,请及时绑定邮箱和手机立即绑定

如何解决 Go 模块将其路径声明为“x”但在 2 个版本之间被要求为“y”

如何解决 Go 模块将其路径声明为“x”但在 2 个版本之间被要求为“y”

Go
慕侠2389804 2023-02-14 17:57:36
我最近不得不将私有存储库从 SaaS Gitlab 迁移到本地版本。我做的一切都很顺利:将repo 中的旧 go 模块路径从更新a为old.com/workspace/anew.com/workspace/av1.2.3-new为最新的提交添加一个新标签更新 repob以引用v1.2.3-new来自的最新标签new.com/workspace/ago mod tidy在 repo 中运行b并验证它是否有效现在我需要引用new.com/workspace/a(originally old.com/workspace/a) 的旧版本标签。所以在 repo 中a,我检查了旧标签,将模块路径固定为new.com/workspace/afromold.com/workspace/a并将其标记为v1.1.1-new.在 repob然后我引用new.com/workspace/a了v1.1.1-new. 但是,这会导致:go: new.com/workspace/a@v1.1.1-new: parsing go.mod:     module declares its path as: old.com/workspace/b             but was required as: new.com/workspace/b如果我检查v1.1.1-newrepo 中的标签a,模块路径在文件中设置正确go.mod:module new.com/workspace/a我不清楚为什么它与v1.2.3-new最新提交的标签一起工作,但当我引用较旧的提交时却失败了。
查看完整描述

1 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

所以我不能说我完全理解为什么这样做有效,但这里是使它起作用的步骤(包括没有起作用的步骤)。

  1. 我诉诸于清除缓存go clean -modcache

  2. 测试了以下但它仍然失败。

    go get new.com/workspace/a@v1.1.1-new
  3. 根据我在原始问题中的评论,这通过提交v1.1.1-new哈希起作用所以我再次求助于它。

    go get  new.com/workspace/a@27ca81f7

    现在它选择了那个提交的版本并且成功了。尽管在命令中使用了提交散列,但该 go.mod文件也已使用标签/版本正确更新go get

    new.com/workspace/a v1.1.1-new


查看完整回答
反对 回复 2023-02-14
  • 1 回答
  • 0 关注
  • 99 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信