2011-05-02 36 views
2

enter image description here水銀分支模型任務功能

我的開發ENV:Windows 7中,TortoiseHg,ASP.NET 4.0/MVC3

測試分支:測試服務器上的代碼 PROD分支機構:生產服務器上的代碼

這是我目前的分支模型。分支出每個任務(功能)的原因是因爲某些功能的運行速度較慢。因此,在上圖中,任務1較早完成(變更集#5),併合併到測試分支中進行測試。但是,由於原始請求的錯誤或修改,已經創建了更改集#10和#12。雖然任務2已經完成了#8測試,並已經推到了#9。

我的問題是每當修改任務分支(如#10,#12)時,我必須做另一個合併來測試分支(#11,#13),這使得圖形非常混亂。

有什麼辦法可以解決這個問題嗎?或者更好的分支模型?

回答

3

這聽起來像是你正試圖實現一個功能分支策略。但是,根據您的圖表,我認爲您錯過了幾個步驟和/或合併了錯誤的分支。從本質上講,你可能應該有更多像4行開發,加上1代表所有功能分支。不幸的是,除了談論Git和可行的分支策略here之外,我還沒有找到一個好的圖表。但是,該圖更好地解釋了您正在尋找的內容,即使您使用的是不同的DVCS,如Mercurial(my fav)。使用Steve Losh的Guide to Branching in MercurialHg Book,您應該能夠實現適合您的良好功能分支策略。每個方法Steve都有優點/缺點。

而且,不,您不需要克隆以正確分支。如果您通常在處理多個未完成的項目和/或爲其他開發人員執行代碼審查/測試,Mercurial已經命名了分支機構,允許您輕鬆地在分支機構之間切換。通過IIS進行任何基於Web的開發,命名分支都可以更容易地處理,因爲不會移動,並且不同的版本可以繼續在IIS下使用相同的配置。

但是我必須說,那個特徵分支或任何你給它的名字幾乎總是一個壞主意,因爲運行時間過長的分支(比如說,我看到過的一年有災難性結果)幾乎是不可能的重新合併,除非您經常(每天)管理功能分支與其父項之間的同步。這種類型的維護開銷並不值得麻煩,您最好堅持基於主幹的開發,並通過發佈分支來修復錯誤,並將您的代碼修復爲抽象代碼,這些代碼是生產使用和未完成的工作。

0

當您想要使用新功能時,最好從測試回購中製作克隆。 mercurial中的分支應該保持不相關...想象一下,你已經發布了v1.0,並開始在你的應用(默認分支)的v2.0上工作。您將創建分支v1.0,以便通過修復錯誤來更新它。

0

您可以改爲爲每個分支使用單獨的存儲庫。然後重新設置最新變更集的變更。這可以減少合併數量