git - 如何在不复制子包代码的情况下将主要版本升级到 v2,并默认获取最新版本?

标签 git go github versioning go-modules

我在升级主要版本时遇到问题,从 v1.x.xv2.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/

相关文章:

authentication - GitHub 身份验证如何工作?

git - 更改存在提交到当前提交

git - 如何将 ssh key 路径添加到 git 命令终端

amazon-web-services - AWS Golang S3管理器上传: Access denied

go - 初始化与数据库的连接时,SQLX 中未定义 'err'

github - 手动调用GitHub Actions工作流程并传递参数

GIT 1.9 - 远程 : error: 'receive.denyCurrentBranch'

linux - 从 git 树中 check out

python - 如何在 USB 驱动器上可移植安装 pip?

go - 原子 AddUint32 溢出