項目的規(guī)模都是有小到大竭讳,從單一模塊開發(fā)创葡,到多個模塊并行開發(fā);從多個模塊開發(fā)完成集中測試發(fā)布绢慢,到模塊可配置測試發(fā)布灿渴。這些開發(fā)和發(fā)布流程都少不了版本管理工具洛波。版本管理工具有很多種,從剛開始工作接觸到的CVS到SVN到現(xiàn)在用的GIT骚露,由于目前公司用的是GIT蹬挤,所以分享一下公司現(xiàn)在GIT的開發(fā)和發(fā)布流程。
平安健康Git開發(fā)棘幸、發(fā)布流程
Master
master永遠都是發(fā)布版本的最新代碼焰扳。
master永遠都是通過合并分支來改變,不允許提交代碼误续。
master發(fā)布完需要添加標簽吨悍,標簽為當前的版本號。
這樣做的好處是為了更清楚的找到每個版本對應(yīng)的代碼蹋嵌,如果以后想做熱修復(fù)可以直接將對應(yīng)版本號的標簽分支出來修改育瓜。
Vx.x.x_Develop
當有新版本需要開發(fā),從Master上建分支并且修改代碼的VersionName和VersionCode提交栽烂。
例如:現(xiàn)在開發(fā)V1.7.0爆雹,我們從Master上拉取分支創(chuàng)建V1.7.0_Develop.不允許在develop分支上直接修改代碼進行提交,develop只能通過合并module和hot_fix分支進行改變愕鼓,這樣才能解決動態(tài)發(fā)布钙态。
Vx.x.x_Release
這個分支是和Develop分支一樣都從Master上建分支并且修改代碼的VersionName和VersionCode提交。這個分支的作用主要是解決動態(tài)發(fā)布菇晃。什么是動態(tài)發(fā)布册倒,舉個栗子:假如并行開發(fā)兩個功能模塊moduleA、moduleB磺送,在測試完成準備發(fā)布同時驻子,由于公司層面或者一些其他原因?qū)е耺oduleB不能上線,只單獨上線moduleA估灿。這樣我們將moduleA分支合并到Vx.x.x_Release分支崇呵,由于代碼的修改只在各自的module分支上進行修改,所以合并之后的Vx.x.x_Release+moduleA就是經(jīng)過測試可以發(fā)布代碼馅袁,經(jīng)過簡單的回歸測試就可以進行發(fā)布了域慷,發(fā)布之后將Vx.x.x_Release合并到master上并且添加當前發(fā)布版本號的標簽。
Vx.x.x_Hot_Fix
hot_fix是用來做線上版本熱修復(fù)的分支汗销,一般都是從master分支出來的犹褒。假如要修改V1.7.0的bug,就從master標簽為V1.7.0拉出來hot_fix分支弛针,進行修改代碼叠骑、測試,發(fā)布補丁包之后將hot_fix合并到master和develop上削茁,保持master和develop是最新的代碼宙枷,最后刪除hot_fix分支掉房。
Vx.x.x_ModuleX
根據(jù)功能進行分支moduleA、moduleB慰丛、moduleC等等圃阳,如果存在develop分支那么就在它上分支出來,如果develop不存在那么就在master上拉出分支璧帝。在開發(fā)測試階段任何對代碼的修改都需要在各自的module上進行捍岳,修改完成在合并到develop上進行測試,當版本發(fā)布了刪除對應(yīng)的module分支睬隶。
總結(jié):
以上開發(fā)锣夹、測試、發(fā)布流程不是最好的但是能解決我們公司當前的多模塊并行開發(fā)苏潜,選擇模塊上線發(fā)布的需求银萍,如果有好的建議大家可以一起分享。
注意:不允許在develop上進行修改代碼提交恤左,更禁止在master上對代碼進行修改提交贴唇。develop只允許通過合并module和hot_fix分支進行修改,master只允許通過合并發(fā)布之后的develop和發(fā)布之后的hot_fix分支進行修改飞袋。