一文详细了解 Go Module( 三 )


$ go get foo@'<v1.6.2'使用分支名称,可以不考虑其是否有语义学版本,而更新为最新的分支提交 。
$ go get foo@master版本升降级后,需测试是否有不兼容问题:
$ go test all3.4 模块版本发布
发布前执行如下命令,以删减未使用的包 。
go mod tidy然后执行如下命令,保证兼容性 。
go test all然后发布时,需将go.sum文件与go.mod一起提交 。
发布v2及以上版本时需注意满足语义学版本引用规则,版本需包含在模块路径及引用路径中 。创建一个v2及以上的版本,有如下两种方式:
【一文详细了解 Go Module】a)不创建子文件夹
go.mod文件包含vN路径(如:module github.com/my/module/v3),模块内的包引用亦需修改为包含版本的格式(如:import "github.com/my/module/v3/mypkg") 。
b)创建子文件夹
创建vN子文件夹,且将go.mod放至该文件夹下,模块路径需以/vN结尾,然后将代码拷贝至vN子文件夹下,然后更新模块内的包引用路径(如:import "github.com/my/module/v3/mypkg") 。
最后,创建一个满足语义学版本的tag,推送至仓库即可 。
但需注意子模块的情形,该种情形tag需包含前缀 。
如,我们有模块example.com/repo/sub/v2,然后想发布版本v2.1.6,仓库为example.com/repo,子模块定义在sub/v2/go.mod,提交时tag需命名为sub/v2.1.6 。


推荐阅读