2011-02-08 78 views
2

考慮以下情況:如何合併bug修復分支到主幹和分支釋放

  • 發展幹線主要是做。
  • 在修復複雜錯誤或開發新功能(最初不穩定)時使用分支。
    正常情況下,一旦開發完成,這些分支就會合併到主幹中。
  • 1個分支用作當前發行分支(比如說當前的「R-1.0」)。
  • 標籤用於發佈(將是「R-1.0.0」)。

現在一個複雜的錯誤,這是在軀幹以及在當前版本1.0.0必須固定:

  1. 的分支「BG-1」,從主幹將被創建。
  2. 該錯誤將在此分支中得到解決。
    與此同時發展將繼續在後備箱。

你現在如何繼續將分支重新集成到主幹和「R-1.0」?

  • 將中繼線合併到「BG1」中,然後將「BG1」重新整合到中繼線中,然後重新整合到「R-1.0」中。
    =>這不可能是解決方案,因爲這種方式「R-1.0」會收到從發佈版1.0開始的所有東西,這不是目標。
  • 嘗試將「BG1」重新整合到主幹中,然後重新整合到「R-1.0」中,而不合並主幹。
    =>這也不能工作,因爲其他不屬於版本1.0的更改已經是「BG1」分支的一部分。

有沒有解決這個問題的方法?
我看到的唯一解決方案是從「R-1.0」啓動「BG1」,而不是首先啓動「trunk」。如果是這樣,這是否意味着對於每個錯誤修復分支,開發人員必須找到包含此發行版分支中的錯誤和分支的最早支持版本?

更新
拼盡全力發展和樹幹的做法源於this answer by "Jim T"這是一個概念,我真的很喜歡。

回答

6

我會建議將樹幹合併到BG1中,然後將BG1重新合併到樹幹中。然後,您可以將一系列修訂合併到R-1.0中。將BG1重新集成到主幹的提交應僅包含錯誤修正,因此您可以將其合併到R-1.0。或者你可以將特定的提交合併到BG1來修復你的bug。

根據自R-1.0以來幹線的變化程度,您可能必須在提交之前手動編輯R-1.0,以便將更改應用於舊代碼。維護舊版本的性質就是這樣。

+0

[+1]我做了一些測試,並得出了與您的建議相同的結果。將BG1集成到主幹中似乎是最容易的,然後只將此版本合併到R-1.0中。讓我看看是否有其他建議,如果沒有,我會接受你的答案。 – Marc 2011-02-08 20:58:54