版本控制總結

jopen 8年前發布 | 7K 次閱讀 版本控制系統 IOS 安卓開發

作為一個程序員,一定要會使用版本控制.當代碼出現問題時才知道版本控制的好處.

工具

常用的版本控制工具有:

  • SVN
  • Git

在這里我不敘述怎樣使用版本控制工具,只是想總結一下自己在項目中關于版本控制的經驗.

過程

實際項目中,代碼的版本控制大概如下:

  1. 創建項目
  2. 開發功能
  3. 第一個內測版本
  4. 第N個內測版本
  5. 第一個公測版本
  6. 第N個公測版本
  7. 第一個正式版本
  8. 修復穩定版bug
  9. 開發新功能

其中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

正式版

當發布正式版之后,要做的有:

  1. 在tag分支下添加tag
  2. 在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修復以及短期迭代的任務.

迭代

迭代分為:快速迭代和長周期迭代.

快速迭代可能是:

  1. 針對上一版本的bug修復
  2. 針對已有功能細節上的優化
  3. 添加可以快速完成的功能

長周期迭代可能是:

1.某一功能在短期內無法完成,需要切分多個快速迭代版本

對于快速迭代,可以在BaseDev分支下開發,等到迭代完畢后將BaseDev更新至Trunk分支.

何時需要建立新的分支?

  1. 新功能暫時無法確定是否在下一版本發布
  2. 新功能開發周期長,分拆為多個版本后但體驗不佳,不能獨立發布

比如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

寫在最后

要盡可能地少建立分支,因為合并代碼的代價太高!!!

要盡可能地少建立分支,因為合并代碼的代價太高!!!

要盡可能地少建立分支,因為合并代碼的代價太高!!!

  1. 盡可能拆分迭代任務,使之為一個可以快速迭代的任務.
  2. 對于代碼的編譯最好使用自動編譯,來控制安裝包的版本.比如: Jenkins

如果有好的方法,請留言或者聯系我哦.點此查看聯系方式

更多文章請移步我的博客:DevWiki Bolg

來自: http://www.devwiki.net/2015/12/30/Code-Version-Controller/

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!