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