2017-09-22 57 views
2

我對有拆分到兩個分支將共享主要功能的項目Mercurial庫工作,但將在它們的一些功能差異:水銀:如何與兩個「主分支」

  ---- B 
     /
---source-+----- A 

現在我想知道我是如何與之合作的。

      ----- new feature ------- 
         /      \ 
      ---- B1 ----+ B2 --- B3 ----- bugfix ---+- MERGE --- 
     /
---source-+----- A1 ---- A2 ------------------------------------ 

假設A1,B1,B2,......等等都是隻應該出現在特定的樹枝簡單的改變(更新標誌,改變文本,...)。不過,我希望在兩個分支中都具有「新功能」和「錯誤修正」。

很明顯,我不能將分支B合併到A中,否則我最終會在B中完成所有更改(但我不想更新徽標)。

所以:我該怎麼做?我真的必須使用this question中建議的第三個分支嗎?這將迫使我去適應一個全新的工作流程。

另外related question提示移植和移植。這是要走的路嗎?

+0

我已經使用這個模型,它縮放比較差。這聽起來像兩個分公司的產品都非常相似。從長遠來看,使用條件編譯或配置文件來分離差異會更簡單。 – user694733

+0

它們在開始時可能會非常相似,但隨着時間的推移將會進一步分離。我們的客戶已經分支出一個業務部門,所以現在我們有兩個對應用程序的未來有不同想法的小客戶。 – BlaM

回答

2

你勾勒出自己的兩種方式要麼是好的 - 它更多的你最喜歡什麼的問題:

一)有三個分支,具有由每個項目/客戶所需要的一切一個主線 - 和兩個客戶 - 相對於更改徽標或文本的主線有特定更改的分支。 Mainline接收錯誤修復和新功能,並定期合併到客戶分支機構中。這樣他們不會「污染」彼此。

b)將它保留在兩個分支,每個客戶一個分支,並將與兩個分支相關的變更移植到另一個分支。

選擇a)或b)是品味的問題,在我看來,更多的問題是你是否會有更多的變更集,這兩個變更集由兩者共享(然後3個分支,少嫁接),或者是否有更多變更集特定到一個分支或另一個分支 - 然後嫁接是較少的工作。可能我總是會選擇一個),但是;它感覺「更清潔」。

實際上有一個選項c):將兩個分支合併到eachother中,並在合併時注意不要合併特定於其他分支的事物。但這可能非常乏味,至少從長遠來看,主要取決於差異的複雜性以及它們在總體變化方面的位置。如果細節在他們自己的文件中,在合併期間合併和跳過「錯誤」更改相對容易。