版本号发布
Go模块版本只要分为三个部分如<major>.<minor>.<patch>,例如对于v1.0.1,主版本<major>是1,次版本<minor>是0,补丁版本<patch>是1
v0版本为项目的初始版本,版本不保证稳定行,可以通过git tag来标记版本,将tag推送至仓库即可 v1版本为稳定版本,当你的项目稳定之后,可以标记v1版本对外发布;另外对于稳定之后的预发布版本,由于Go命令首选的是正常版本,而不是预发布版本;可以通过-来制定预发布版本,如v1.0.1-beta、v1.0.1-alpha;使用的时候需要显示的指定预发布版本go get github.com/p1024k/[email protected] 下面看下怎么发布第一个v0.0.1版本:
创建仓库
首先在你的github仓库创建一个repository,命名为hello,然后将hello项目同步至仓库
标记并推送Tag
通过git标签维护版本。都以master为主仓库,每开发一个版本从master切换出一个分支开发。然后合并回master主分支。在master主分支上执行以下动作。
1 | git tag v0.0.1 |
在其他项目中引用
在项目中直接导入"github.com/p1024k/hello",然后通过执行 go mod tiny或者go mod build就可以添加新的依赖了
1 | package main |
引入依赖之后 cat go.mod,可以看到已经引入了我们自定义的模块
1 | module study |
版本升级
Go模块中规范了一个重要原则
If an old package and a new package have the same import path, the new package must be backwards compatible with the old package.
1 | 如果旧包和新包具有相同的导入路径,新包必须向后兼容旧包。 |
v0->v1
假设我们自定义的模块已经稳定了,那么开始要对外发布v1.0.0版本了
- 拉取新的分支v1.0.0_branch
- git tag v1.0.0 并且推送到远程仓库
v1->v2
v1->v2的升级属于主版本的升级(v2不向后兼容), 这里有两种方式:
- 创建新的版本目录v2
- 继续使用v0->v1的升级方式
这里只讲在V1->V2的情况。且只讲继续使用V0->v1的升级方式。
拉取新的分支,修改go.mod路径为github.com/p1024k/hello/v2,基于master分支打tag v2.0.0
1 | # checkout from master |