qileilove

          blog已經(jīng)轉移至github,大家請訪問 http://qaseven.github.io/

          版本控制的分支策略及初步實踐

            這幾天在網(wǎng)上查詢了一些資料,了解到比較常見的版本控制分支策略有三種:不穩(wěn)定主干策略、穩(wěn)定主干策略、敏捷發(fā)布策略。

            下面是對這幾種策略的摘錄:

            不穩(wěn)定主干策略

            使用用主干作為新功能開發(fā)主線,分支用作發(fā)布。

            被廣泛的應用于開源項目。

            比較適合諸如傳統(tǒng)軟件產(chǎn)品的開發(fā)模式,比如微軟的office等。

            bug修改需要在各個分支中合并。

            新代碼在主干上開發(fā),因此如果主干不能達到穩(wěn)定的標準,就不可以進行發(fā)布。

            這種策略的好處是沒有分支合并的工作量,因此比較簡單。

            穩(wěn)定主干策略

            使用主干作為穩(wěn)定版的發(fā)布。

            bug的修改和新功能的增加,全部在分支上進行。

            不同的修改或新功能開發(fā)以分支隔離。

            分支上的開發(fā)和測試完畢以后才合并到主干。

            主干上的每一次發(fā)布都做一個標簽而不是分支。

            每次發(fā)布的內(nèi)容調(diào)整起來比較容易。

            缺點是分支合并所增加的成本。

            敏捷發(fā)布策略

            敏捷開發(fā)模式的項目中廣泛采用,敏捷開發(fā)的項目具有固定的發(fā)布周期。

            為每個task建立分支。

            為每個發(fā)布建立分支,每個周期內(nèi)的task分支需要合并到發(fā)布分支發(fā)布。

            在完成發(fā)布后,發(fā)布分支的功能合并到主干和尚在進行的任務分支中。

            一種穩(wěn)定主干策略的變體。

            團隊成員要求較高。

            團隊當前情況

            負責互聯(lián)網(wǎng)產(chǎn)品的開發(fā),發(fā)布更新較為頻繁。

            有固定的發(fā)布周期,同時也存在比較多的hotfix。

            修改任務通常比較小,改動范圍通常不大,時間通常較短。

            不同的功能頁面有不同的小組負責,耦合度相對較低。

            團隊目前沒有采用分支策略,開發(fā)人員協(xié)商進行增量更新,出現(xiàn)錯誤的幾率較高。

            已使用微軟TFS做為版本控制工具,可以更充分的挖掘使用TFS的分支功能。

            我的初步實踐

            參考上述策略,結合當前團隊的現(xiàn)狀,我初步設計了下面的版本控制解決方案。

            此方案已穩(wěn)定主干策略為主結合了一些敏捷發(fā)布策略的思路,具體實施方案如下:

            1、主干時刻處于穩(wěn)定狀態(tài),隨時可以發(fā)布。設專門人員對主干代碼進行管理,普通開發(fā)人員只讀。

            2、為開發(fā)任務建立開發(fā)分支。常規(guī)的可以以小組為單位建立分支,較大的任務可以建立專門的分支。

            3、在發(fā)布日,從主干復制一個測試分支,需要在本發(fā)布日發(fā)布的各開發(fā)分支向此測試分支合并。

            4、對測試分支代碼進行測試,出現(xiàn)bug在測試分支上更改,無誤后發(fā)布。

            5、測試分支代碼發(fā)布后,合并入主干,并在主干上進行標記。

            6、對緊急修復(Hotfix)的情況,可以從主干復制出測試分支,在測試分支上進行緊急修改,并在測試后發(fā)布,發(fā)布后同樣將代碼合并會主干,做標記。

            7、 Hotfix僅限于可以很快解決的小問題,如果更改時間過長,則需采用常規(guī)方法完成。

            8、如果在測試分支測試過程中需要hotfix工作,則在復制一個新的測試分支進行hotfix,測試后發(fā)布。然后同時合并入原測試分支和主干,并在主干上做標記。此過程未在上圖中畫出。

            9、測試分支發(fā)布后,開發(fā)分支可以刪除;測試分支合并入主干后,測試分支可以定期刪除。

            方案的優(yōu)缺點

            方案優(yōu)點

            1、解決了沒有實施分支策略時,代碼不能經(jīng)常簽入的問題。

            2、主干代碼始終處于穩(wěn)定的狀態(tài)隨時可以發(fā)布,降低了風險。

            3、可以基于一個完整的測試分支進行測試及發(fā)布,而不是以口口相傳的方式增量更新。

            方案缺點

            1、建立分支、合并分支增加了工作量??紤]實際情況,以及版本控制工具的輔助,增加的工作量應該可以接受。

            2、如果某些開發(fā)分支工期跨越多個發(fā)布周期,修改過于劇烈,合并分支時可能工作量較大??梢钥紤]分解任務,避免過大的任務出現(xiàn)。

            3、在同一時間最好只有一個測試分支,因此建立測試分支的權限需要限制,除hotfix場景外應當避免。

          posted on 2012-09-05 10:05 順其自然EVO 閱讀(452) 評論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)庫

          <2012年9月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          導航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 安仁县| 南平市| 历史| 五华县| 仁化县| 延川县| 双辽市| 博客| 安义县| 合阳县| 米脂县| 滦平县| 和顺县| 梅河口市| 鄯善县| 黄骅市| 浑源县| 丰城市| 镇平县| 珠海市| 凌源市| 临西县| 任丘市| 平谷区| 浪卡子县| 镇雄县| 垦利县| 余干县| 乌兰县| 鄱阳县| 洛浦县| 建宁县| 东阳市| 鸡东县| 元江| 宁德市| 宜章县| 普兰县| 贡山| 大同市| 二连浩特市|