2009-06-19 90 views
4

我目前正在修改我們商店的版本控制方式。我們將使用以服務器爲中心的版本控制解決方案。分支模式/政策

我想看看其他人是如何分支,併成功地做這件事,沒有我所瞭解的頭痛。

在生產環境中看到的一些經過現場測試的分支模式可以很好地工作,即每個版本分支。已經制定了什麼政策來確保分支順利進行。

由於

回答

2

這取決於你正在開發什麼樣的軟件。

對於我們來說,我們是一家網上商店,所以我們沒有任何編號的「發佈」。我們保留樹幹作爲'生產'的價值,只能直接進行小的改變。

當我們有一個大的項目,我們創建一個分支,它工作到生產準備,所有的同時同步主幹的修改進去。

如果項目涉及大量的重組代碼庫的,我們一般會合並分支修改之前創建的最後一次修訂的標籤。

再一次,如果你正在創建打包軟件,你需要維護不同的版本,這將不會有效。

爲了記錄在案,我們使用。

+0

我們是一家網上商店,所以我認爲這樣的模式會很棒。 – jon37 2009-06-19 23:33:15

1

subversion book描述了一些常用的分枝模式(例如發佈分支,功能分支等)。

0

這是我們做的方式,它的工作原理很適合我們......

Project 
    | 
    +--01-Development 
    | | 
    | +--Release1.0 
    | | | 
    | | +--Solution Files 
    | | 
    | +--Release2.0 
    |  | 
    |  +--Solution Files 
    | 
    +--02-Integration 
    | | 
    | +--Release1.0 
    | | | 
    | | +--Solution Files 
    | | 
    | +--Release2.0 
    |  | 
    |  +--Solution Files 
    | 
    +--03-Staging 
    | 
    +--04-Production 

以及你的想法...

注:這是團隊基礎的目錄結構服務器分支僅存在於01-開發/發佈1.0和02-集成/發佈1.0, 02-集成/發佈1.0和03-發佈/發佈1.0, 03-暫存/發佈1.0和04-生產/Release1.0

換句話說,你將無法合併03-Staging/Release1.0到04-Production/Release2.0等...

這對我們有什麼作用是我們有4個獨立的環境開發,集成(Alpha服務器),分段(測試服務器),生產。

代碼開始開發開始發展,然後,因爲它通過QA(集成/阿爾法)和用戶(分期/測試)測試,最後到生產被提升。

收集功能/更改並將其分組爲每幾個月發佈的版本。

但讓我們說你正在爲Release2.0開發,並且你在Release1.0上得到了一個生產問題......我可以很容易地獲得最新版本的Release1.0,並且修復這個問題並且在不影響任何我一直在爲Release2工作。0

不會說這會適用於所有情況下的每個人,但這對我們來說非常有效。

1

3考慮分支的事情。

第一:只要您打算稍後合併事物,分支就很好。當然,您可以隨時爲您的某位客戶提供具有特定補丁的分支機構,並解決特定問題。但最終你想要將大部分補丁合併回主幹線

第二:認定你的需求。我已經看過各種規模的樹,具體取決於部門的規模,客戶的數量等等。

第三:檢查你的源代碼控制對於分支和合並有多好。例如,對於這種操作,CVS非常糟糕。 SVN,「他們聲稱CVS做得對」,稍微好一點。但是創建Git的Linus Torvalds(這對於這種操作來說特別好)會告訴你CVS無法做到正確(他在Git上的一個非常有趣的演示中說過)。所以如果你真的需要分支和合並,至少得到SVN而不是CVS。

1

看一看分支模式:

http://www.cmcrossroads.com/bradapp/acme/branching/

它描述了許多的模式與模式工作。我通常工作在兩個方面:

  • 穩定接收線 - 所有的開發是在分支完成,僅在需要時合併到主幹。這意味着你總是有一個穩定的發佈點。

  • 主要開發線 - 所有的工作都在後備箱內進行。當涉及到釋放你採取釋放標籤,並使用它。如果需要進行重大實驗返工,則在分支中進行並在穩定後合併回主幹。