在原先的文章中已經(jīng)介紹過(guò)了:
但是在實(shí)際的敏捷開(kāi)發(fā)實(shí)戰(zhàn)中辉浦,更多的公司會(huì)有如下的需求:
- 兩周開(kāi)發(fā)一個(gè)版本院促,單個(gè)版本一周開(kāi)發(fā)一周測(cè)試;
- 多版本并行,先前的版本進(jìn)入測(cè)試階段,后續(xù)的版本就開(kāi)始開(kāi)發(fā)了;
- 某個(gè)版本的需求內(nèi)容不固定,視實(shí)際情況需要砍掉需求或者新增需求;
如此匀油,先前的GitlabFlow也顯得不是很靈活,不能很好地滿足敏捷的需要勾笆。在調(diào)研別的公司的分支管理模式及結(jié)合自己的工作經(jīng)歷后推薦使用如下的分支管理方法敌蚜。
一、分支管理
1.1 master分支
主干分支是長(zhǎng)期分支窝爪,是所有其它分支的上游分支弛车,它的直接下游分支有release分支和hoxfix分支。
只有當(dāng)release分支或者bugfix分支上的內(nèi)容完成生產(chǎn)發(fā)布且驗(yàn)證無(wú)誤后酸舍,才從release分支合并到master上帅韧,如此,master主干分支上的內(nèi)容就是極度穩(wěn)定可靠的啃勉,每個(gè)版本都打一個(gè)tag忽舟,標(biāo)記里程碑。
1.2 release分支
發(fā)布分支是短期分支淮阐,代表一個(gè)版本的發(fā)布時(shí)間窗口叮阅,從master分支創(chuàng)建而來(lái),任何人不能直接在release分支上提交代碼泣特,所有的內(nèi)容必須從feature分支合并而來(lái)浩姥。
發(fā)布版本的時(shí)候從release分支進(jìn)行發(fā)布,驗(yàn)證有問(wèn)題可在該分支上繼續(xù)修改状您,發(fā)布完成后再合并到master分支上勒叠,等到master上打了相應(yīng)的tag,該發(fā)布分支就結(jié)束膏孟,可以刪除了眯分。
1.3 bugfix分支
修復(fù)分支是短期分支,僅在有生產(chǎn)BUG需要修復(fù)時(shí)柒桑,從master分支創(chuàng)建而來(lái)弊决,同樣的,任何人不能直接在bugfix分支上提交代碼魁淳,所有的內(nèi)容必須從feature分支合并而來(lái)飘诗。
布版本的時(shí)候從bugfix分支進(jìn)行發(fā)布与倡,驗(yàn)證有問(wèn)題可在該分支上繼續(xù)修改,發(fā)布完成后再合并到master分支上昆稿,等到master上打了相應(yīng)的tag纺座,該發(fā)布分支就結(jié)束,可以刪除了貌嫡。
1.4 feature分支
特性分支是短期分支比驻,開(kāi)發(fā)人員從release分支創(chuàng)建而來(lái)该溯,進(jìn)行具體某個(gè)功能的開(kāi)發(fā)岛抄,開(kāi)發(fā)完成后合并到要發(fā)布的release分支上即可,合并完成狈茉,該分支就可以刪除了夫椭。
二、場(chǎng)景操作
2.1 單一版本管理
從master分支新建release分支氯庆,開(kāi)發(fā)人員從release分支創(chuàng)建自己的feature分支蹭秋,完成開(kāi)發(fā)后合并到release分支,測(cè)試基于release分支進(jìn)行測(cè)試和生產(chǎn)驗(yàn)證堤撵,確認(rèn)沒(méi)有問(wèn)題后仁讨,基于release分支進(jìn)行生產(chǎn)正式發(fā)布。完成發(fā)布后实昨,release分支合并到master分支上洞豁,master分支上打上當(dāng)前版本的tag,刪除release分支荒给。
2.3 多版本并行管理
第一個(gè)版本releaseA的管理同2.1丈挟,如果先前的版本還沒(méi)有發(fā)布,此時(shí)開(kāi)發(fā)要進(jìn)行下一個(gè)版本的開(kāi)發(fā)志电,只需從master分支再創(chuàng)建一個(gè)新的releaseB分支即可曙咽,如果releaseB依賴(lài)releaseA的部分還未上線的內(nèi)容,可以先將releaseA的內(nèi)容合并到releaseB上挑辆。等到releaseA發(fā)布并合并到master之后例朱,再?gòu)膍aster合并一下到releaseB上即可。
2.4 需求變更管理
假設(shè)releaseA有兩個(gè)特性feature1和feature2鱼蝉,如果feature1不需要了洒嗤,那么feature1不要往releaseA上合并即可。如果已經(jīng)合并才決定不需要該特性了蚀乔,那么可以重新從master分支拉取releaseA分支烁竭,再將需要的特性合并上去即可。
2.5 修復(fù)生產(chǎn)問(wèn)題
從master分支新建bugfix分支吉挣,開(kāi)發(fā)人員從bugfix分支創(chuàng)建自己的feature分支派撕,其余部分內(nèi)容同2.1管理婉弹。
如果還有其它我沒(méi)有想到的場(chǎng)景,歡迎留言终吼,一起看看當(dāng)前的分支管理模式能否滿足你的場(chǎng)景需要镀赌。