我在升级主要版本时遇到问题,从 v1.x.x
到 v2.0.0
。
我创建了一个新的 git 标签,v2.0.0
和一个新的子文件夹,/v2/
,放 go.mod
文件并相应地更改了模块名称。
我的模块包含几个子包,现在我无法导入它们 - 即使是那些没有对其进行更改的子包也是如此。
例如,我无法导入 /v2/mypkg/
- 我收到 module found but does not contain package
错误。如前所述,此文件夹仅包含 go.mod
文件。
我无法弄清楚 - 如果没有对 mypkg
进行任何更改 - 如果我希望制作另一个包的副本(?!),那么相同的代码将同时存在于 mypkg/
和 v2/mypkg/
。
我试图在常见的 Go 存储库中在线查找示例,它看起来像:
- 所有使用 go-mod 的 repos 都低于 v2
- v2 以上的 repo 不是 100% 兼容 go-mod
我可以通过使用 +incompatible
导入我的包来解决这个问题,然后创建一个 git 标签就足够了(无需创建 /v2
)。但是,如果我在没有严格要求 v2.0.0
的情况下导入包,默认情况下我会得到最新的 v1.x.x
,这对我来说并不是真正的最新版本.
我能做什么?
最佳答案
当您将版本更新到 v2
时,您还需要更新引用该版本的 import
语句以使用 /v2
模块路径上的后缀。
没有该后缀,导入指的是原始 v1 模块中的包。 (如果您有意在两个主要版本之间提供兼容性垫片,这可能会有用。)
参见 Developing a major version update更多详情..
关于git - 如何在不复制子包代码的情况下将主要版本升级到 v2,并默认获取最新版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59304846/