版本結(jié)構(gòu)v(major).(minor).(patch)攻晒,如v0.1.0, v1.2.3, or v1.5.0苛秕。
go.mod的結(jié)構(gòu)包括, module, require, replace, exclude,如下
module v9.git.n.xiaomi.com/AD-Planner/manager
go 1.12
require (
github.com/Masterminds/goutils v1.1.0 // indirect
github.com/Masterminds/semver v1.4.2 // indirect
github.com/Masterminds/sprig v2.20.0+incompatible // indirect
github.com/jaytaylor/html2text v0.0.0-20190408195923-01ec452cbe43 // indirect
github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 // indirect
github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect
github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf // indirect
gopkg.in/russross/blackfriday.v2 v2.0.1 // indirect
)replace gopkg.in/russross/blackfriday.v2 v2.0.1 => github.com/russross/blackfriday/v2 v2.0.1
版本選擇規(guī)則:
- 如果新增了一個(gè)import榔组,但是沒(méi)有被go.mod記錄搞坝,那么'go build'或'go test'會(huì)將該包的最新版本自動(dòng)添加到go.mod里;
- 包版本的選擇采用最小版本選擇算法(minimal version selection)喉祭,舉例說(shuō)明,如果module依賴(lài)A配置有require D v1.0.0雷绢,依賴(lài)B配置有require D v1.0.1泛烙,那么構(gòu)建的時(shí)候會(huì)選擇v1.0.1。
- 不會(huì)自動(dòng)升級(jí)依賴(lài)的version翘紊,保證100%可重復(fù)構(gòu)建蔽氨。