|
作者:張克強(qiáng) 作者微博:張克強(qiáng)-敏捷307 1,先鋒主干多穩(wěn)定分支;2,守護(hù)主干多先鋒分支;3,主干無分支;4,守護(hù)主干單分支。 一、先鋒主干多穩(wěn)定分支得到一個(gè)穩(wěn)定版本后,將此穩(wěn)定版本放到一個(gè)新分支上,針對(duì)此穩(wěn)定版本的修修補(bǔ)補(bǔ)就在這個(gè)分支上進(jìn)行,新功能不在此分支上開發(fā),而在主干上進(jìn)行新功能的開發(fā)。 這是業(yè)界采用較多的模式。 穩(wěn)定分支上的有些修改,比如缺陷修復(fù),需要合并到主干, 但有些特定修改,是不需要合并到主干的。這時(shí)需要千萬注意,合并準(zhǔn)確的文件到主干。 對(duì)于不能合并到主干的情況,常見的是再拉一個(gè)分支,這個(gè)分支專門為少數(shù)特定情況而用,但從全局講,可能會(huì)導(dǎo)致太多分支,不同分支間混亂,所以這并不推薦。推薦寧愿采用配置開關(guān)。 圖片來源于 http://blog.csdn.net/binnacler/article/details/4274486 比如freebsd的發(fā)布就是一個(gè)典型的例子。 二、守護(hù)主干多先鋒分支得到一個(gè)穩(wěn)定版本后,拉出先鋒分支,在分支上開發(fā)新功能,在主干上進(jìn)行修修補(bǔ)補(bǔ)。當(dāng)先鋒分支通過一定的測(cè)試之后,合并到主干。可以同時(shí)有多個(gè)先鋒分支,不同的功能可以拉不同的分支,不同發(fā)布時(shí)間點(diǎn)而又要同時(shí)開發(fā)的內(nèi)容必須在不同的分支上。 從發(fā)布的角度講,更推薦將肯定一起發(fā)布的內(nèi)容放在相同的先鋒分支上。 主干上永遠(yuǎn)是穩(wěn)定版本,可以隨時(shí)發(fā)布。bug的修改和新功能的增加,全部在分支上進(jìn)行。而且每個(gè)bug和新功能都有不同的開發(fā)分支,完全分離。而對(duì)主干上的每一次發(fā)布都做一個(gè)標(biāo)簽而不是分支。分支上的開發(fā)和測(cè)試完畢以后才合并到主干。 這種發(fā)布方法的好處是每次發(fā)布的內(nèi)容調(diào)整起來比較容易。如果某個(gè)新功能或者bug在下一次發(fā)布之前無法完成,就不可能合并到主干,也就不會(huì)影響其他變更的發(fā)布。另外,每個(gè)分支的生命期比較短,唯一長期存在的就是主干,這樣每次合并的風(fēng)險(xiǎn)很小。每次發(fā)布之前,只要比較主干上的最新版本和上一次發(fā)布的版本就能夠知道這次發(fā)布的文件范圍了。 【此段摘自于網(wǎng)絡(luò) http://thinkernel./4518935.html 】 三、主干無分支只有主干,沒有分支,所有緊急正常的修改全在主干上,開發(fā)了一半的東西如果要上線的話,要巧妙的藏起來。對(duì)程序的結(jié)構(gòu)提出了高要求,分分合合要方便,開關(guān)配置是少不了的了。單從效率講,這是最高效的模式了。要有不少配套措施才可以。常見的配套措施:每日集成(編譯部署測(cè)試),靜態(tài)代碼檢查,測(cè)試不僅僅有單元測(cè)試,還有接口測(cè)試,還有界面自動(dòng)化測(cè)試。 四、守護(hù)主干單分支只有一個(gè)分支,緊急修改在主干上進(jìn)行,正常開發(fā)在分支上進(jìn)行,主干和分支根據(jù)需要雙向同步。需要采用與主干無分支相同的配套手段,而且在主干和分支上都需要建設(shè)每日集成,甚至持續(xù)集成。 以上四種模式是主干分支開發(fā)的典型情況。 在實(shí)際應(yīng)用中,前2種更加常見一些, 主干無分支開發(fā)時(shí)碰到極其特殊情況時(shí),不排除拉短分支。 而在第一個(gè)模式先鋒主干穩(wěn)定分支開發(fā)時(shí)與第三個(gè)模式主干無分支,是可以在一段時(shí)間內(nèi)相互轉(zhuǎn)換的。 參考資料 1,代碼的分支管理策略 http://thinkernel./4518935.html |
|
|