假设我有一个存储库 github.com/user/golang-examples
并且我准备单独对其中的每个示例模块进行版本控制:
guthub.com/user/golang-examples
/modA
/go.mod
/pkgA1
/pkgA2
/modB
/go.mod
/pkgB1
/pkgB2
(我知道成语是“one repo - one module”,但也有用于多模块项目的用例,所以这不是讨论的主题)
同时,语义 git 标记(v1.0.0
、v2.0.0
等)发生在 repo 级别,不是它的子文件夹。这使得无法单独标记模块,例如
- 首先,
modA
在主版本的开发中超越了modB
,并且标签v2.0.0
被推送到 repo 级别,目的是版本modA
- 以后想升级
modB
到v2时,不能push同一个v2.0.0
git标签第二次到modB版本
。
如何按照golang的版本化范式来完成这个任务?同样,这是关于多模块项目的。将模块拆分为存储库的明显解决方案在这里有点不利,因为需要顶级存储库的总体“示例”语义。
谢谢!
最佳答案
好的,在继续搜索之后我找到了这个资源:https://github.com/go-modules-by-example/index/blob/master/009_submodules/README.md
应用于我的情况,答案是使用:
- 对于模块
modA
使用modA/vX.Y.Z
形式的标签(使用语义版本控制) - 对于模块
modB
使用modB/vX.Y.Z
形式的标签>
对于上下文,来自上面 lint 的引用:
The official modules proposal predicts that most projects will follow the simplest approach of using a single Go module per repository, which typically means creating one go.mod file located in the root directory of a repository.
出于某种原因,我仍然找不到正确的文档/规范引用。
关于semantic-versioning - 戈朗 : separate versioning of multiple modules,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64701064/