不少有追求的團(tuán)隊(duì)都使用Git來(lái)進(jìn)行代碼版本管理了吧,但我相信還有很多團(tuán)隊(duì)橡疼,不僅是大公司團(tuán)隊(duì),或是小創(chuàng)業(yè)公司團(tuán)隊(duì)庐舟,都還在使用SVN這種簡(jiǎn)單易學(xué)的代碼管理工具。以下方法來(lái)自我原來(lái)公司團(tuán)隊(duì)挪略。它不僅可以可以清晰管理好每個(gè)版本代碼历帚,還可以解決以下兩個(gè)問(wèn)題:
1. 滿足多個(gè)小組,或者多個(gè)項(xiàng)目同時(shí)協(xié)同開(kāi)發(fā)挽牢;
2. 面對(duì)變化多端的需求,可以臨時(shí)插件一個(gè)版本緊急發(fā)布禽拔;
對(duì)于小團(tuán)隊(duì)刘离、快速發(fā)展的產(chǎn)品來(lái)說(shuō)睹栖,妥善處理好上述第2點(diǎn)顯得很重要。下面舉例說(shuō)明怎樣在SVN上友好進(jìn)行版本迭代代碼管理磨淌,其中SVN操作可以使用Conerstone疲憋。假設(shè)我們立項(xiàng)了一個(gè)新項(xiàng)目梁只,名稱取為Sample。
1)項(xiàng)目工程準(zhǔn)備
a.在SVN服務(wù)器上創(chuàng)建一個(gè)Sample文件夾搪锣,在其下創(chuàng)建4個(gè)目錄秋忙,分別如下(+:表示文件目錄展開(kāi)构舟;-:表示文件目錄收起):
+Sample
-branches
-tags
-releases
-trunk
b.將工程文件導(dǎo)入大主干trunk(trunk上的代碼與線上版本代碼保持一致)
+Sample
-branches
-tags
-releases
+trunk
-Sample
-Sample.xcodeproj
2)迭代一個(gè)新版本
a. 從大主干trunk上開(kāi)一個(gè)開(kāi)發(fā)分支到branches目錄下,團(tuán)隊(duì)成員基于Branch_Sample_1.0.0分支開(kāi)發(fā)
+Sample
+branches
+Branch_Sample_1.0.0
-Sample
-Sample.xcodeproj
-tags
-releases
+trunk
-Sample
-Sample.xcodeproj
b. 開(kāi)發(fā)完成后狗超,進(jìn)入測(cè)試階段,這時(shí)最好基于tag打包提測(cè)努咐。在tags目錄下首先創(chuàng)建包含版本號(hào)信息的tag目錄苦蒿,例如tag_Sample_1.0.0渗稍,再將Branch_Sample_1.0.0打一個(gè)tag到該目錄下,提測(cè)打包tag名稱包含版本號(hào)及當(dāng)前操作時(shí)間竿屹,例如tag_Sample_1.0.0_20170512报强。一般每個(gè)版本都會(huì)前后打多個(gè)tag測(cè)試拱燃。
+Sample
+branches
+Branch_Sample_1.0.0
-Sample
-Sample.xcodeproj
+tags
+tag_Sample_1.0.0_20170512
-Sample
-Sample.xcodeproj
-releases
+trunk
-Sample
-Sample.xcodeproj
c. 測(cè)試完成后,為了讓每個(gè)發(fā)布版本代碼歷史可查,發(fā)布打包也不是從branch上直接打包坚嗜,而是先從branch上tag一個(gè)版本到releases目錄下诗充,再打包提交發(fā)布苍蔬。如果到了這一步,發(fā)現(xiàn)了嚴(yán)重bug碟绑,也直接在release分支上修正,之后再手工同步到對(duì)應(yīng)的開(kāi)發(fā)分支上茎匠。
+Sample
+branches
+Branch_Sample_1.0.0
-Sample
-Sample.xcodeproj
+tags
+tag_Sample_1.0.0_20170512
-Sample
-Sample.xcodeproj
+releases
+Release_Sample_1.0.0
+Release_Sample_1.0.0_20170520
-Sample
-Sample.xcodeproj
+trunk
-Sample
-Sample.xcodeproj
d. 版本發(fā)布后,則需要將Branch_Sample_1.0.0的代碼同步回(reintegrate branch)trunk上诵冒,保證trunk上代碼與線上版本代碼一致。開(kāi)發(fā)下一個(gè)版本時(shí)汽馋,使用上述相同的順序操作侮东。
3)插入小版本
假設(shè)在開(kāi)發(fā)一個(gè)大版本1.2.0時(shí)豹芯,突然產(chǎn)品上有緊急需求,需要立即先發(fā)布一個(gè)小版本铁蹈,而由于Branch_Sample_1.2.0上已經(jīng)在開(kāi)發(fā)進(jìn)行中了宽闲,所以不能直接在這個(gè)分支上修改發(fā)布小版本握牧,這時(shí)可從trunk上按上述方法再開(kāi)一個(gè)新的小版本分支出來(lái),例如叫Branch_Sample_1.1.1沿腰,在新的分支上開(kāi)發(fā)完成览徒,再依次打tag測(cè)試矫俺,最后發(fā)布。等小版本1.1.1發(fā)布后厘托,再將代碼同步(reintegrate branch)到trunk友雳,并從trunk將1.1.1增加的代碼同步(synchronize branch)到開(kāi)發(fā)分支Branch_Sample_1.2.0上即可铅匹。多個(gè)版本后,SVN服務(wù)器成版本目錄呈現(xiàn)類似如下:
+Sample
+branches
...
-Branch_Sample_3.4.0
-Branch_Sample_3.4.1
-Branch_Sample_3.5.0
+Branch_Sample_3.5.1
-Sample
-Sample.xcodeproj
...
+tags
...
-tag_Sample_3.4.0
-tag_Sample_3.4.1
+tag_Sample_3.5.0
-tag_Sample_3.5.0_2017091114
-tag_Sample_3.5.0_2017091121
+tag_Sample_3.5.1
+tag_Sample_3.5.1_2017101011
-Sample
-Sample.xcodeproj
...
+releases
...
-Release_Sample_3.4.0
-Release_Sample_3.4.1
-Release_Sample_3.5.0
+Release_Sample_3.5.1
+Release_Sample_3.5.1_2017101110
-Sample
-Sample.xcodeproj
...
+trunk
-Sample
-Sample.xcodeproj
總之,基本的管理思想如上所述流礁,但可以根據(jù)具體團(tuán)隊(duì)情況,增減上述流程神帅。比如再姑,之前在較大的團(tuán)隊(duì)時(shí)找御,團(tuán)隊(duì)會(huì)在開(kāi)發(fā)分支Branch_Sample_1.0.0基礎(chǔ)上,再各自開(kāi)一個(gè)個(gè)人開(kāi)發(fā)分支進(jìn)行功能開(kāi)發(fā)霎桅,等等栖疑。