版本控制總結
作為一個程序員,一定要會使用版本控制.當代碼出現問題時才知道版本控制的好處.
工具
常用的版本控制工具有:
- SVN
- Git
在這里我不敘述怎樣使用版本控制工具,只是想總結一下自己在項目中關于版本控制的經驗.
過程
實際項目中,代碼的版本控制大概如下:
- 創建項目
- 開發功能
- 第一個內測版本
- 第N個內測版本
- 第一個公測版本
- 第N個公測版本
- 第一個正式版本
- 修復穩定版bug
- 開發新功能
其中3 ~ 7可能會有很多,也可能很少,視公司情況而定.
以下以SVN為例,來說明這一功能.
前提
項目名稱:Chat三端:Android,IOS,Server
創建根目錄
源碼根目錄如下:
|-Chat |-trunk |-Android |-IOS |-Server |-branches |-tag
開發
各端在各自的Trunk分支下進行開發,直到第一個穩定的內測版本.
內測
當發布第一個內測版本時,此時應在tag分支下添加tag,如下:
|-Chat |-trunk |-Android |-IOS |-Server |-branches |-tag |-Android |-inner_test_1.0.0 |-IOS |-inner_test_1.0.0 |-Server |-inner_test_1.0.0
無論哪個端發布版本都應在tag分支下添加tag.
公測
內測幾版之后,可以進行公測,測試繼續在Trunk分支下開發,然后在發布公測版本時在tag分支下添加tag.如下所示:
|-Chat |-trunk |-Android |-IOS |-Server |-branches |-tag |-Android |-inner_test_1.0.0 |-inner_test_1.0.1 |-inner_test_1.0.2 |-public_test_1.0.3 |-public_test_1.0.4 |-IOS |-inner_test_1.0.0 |-Server |-inner_test_1.0.0
正式版
當發布正式版之后,要做的有:
- 在tag分支下添加tag
- 在branches分支添加開發版分支
如下所示:
|-Chat |-trunk |-Android |-IOS |-Server |-branches |-Android |-BaseDev |-tag |-Android |-inner_test_1.0.0 |-inner_test_1.0.1 |-inner_test_1.0.2 |-public_test_1.0.3 |-public_test_1.0.4 |-release_1.0.5 |-IOS |-inner_test_1.0.0 |-Server |-inner_test_1.0.0
BaseDev分支的意義在于:在此版本上只做針對上一穩定版的bug修復以及短期迭代的任務.
迭代
迭代分為:快速迭代和長周期迭代.
快速迭代可能是:
- 針對上一版本的bug修復
- 針對已有功能細節上的優化
- 添加可以快速完成的功能
長周期迭代可能是:
1.某一功能在短期內無法完成,需要切分多個快速迭代版本
對于快速迭代,可以在BaseDev分支下開發,等到迭代完畢后將BaseDev更新至Trunk分支.
何時需要建立新的分支?
- 新功能暫時無法確定是否在下一版本發布
- 新功能開發周期長,分拆為多個版本后但體驗不佳,不能獨立發布
比如Chat項目新添加功能空間(Space),該功能無法在快速迭代中完成,開發周期可能較長.此時就需要在branches下添加分支.如:
|-Chat |-trunk |-Android |-IOS |-Server |-branches |-Android |-BaseDev |-Space |-tag |-Android |-inner_test_1.0.0 |-inner_test_1.0.1 |-inner_test_1.0.2 |-public_test_1.0.3 |-public_test_1.0.4 |-release_1.0.5 |-IOS |-inner_test_1.0.0 |-Server |-inner_test_1.0.0
寫在最后
要盡可能地少建立分支,因為合并代碼的代價太高!!!
要盡可能地少建立分支,因為合并代碼的代價太高!!!
要盡可能地少建立分支,因為合并代碼的代價太高!!!
- 盡可能拆分迭代任務,使之為一個可以快速迭代的任務.
- 對于代碼的編譯最好使用自動編譯,來控制安裝包的版本.比如: Jenkins
如果有好的方法,請留言或者聯系我哦.點此查看聯系方式
更多文章請移步我的博客:DevWiki Bolg
來自: http://www.devwiki.net/2015/12/30/Code-Version-Controller/
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!