2013-03-15 95 views
7

什麼是mercurial相當於gits不快速前進合併(萬一快速前進將是可能的)?有沒有一種相當於快速合併的快速合併?

編輯

假設你有一個分支/書籤在你的頭/尖主/默認的:

o feature 
| 
o 
| 
o master/default 
| 
... 

一個簡單的快進合併將導致:

o feature/master/default 
| 
o 
| 
o 
| 
... 

非快進合併將如下所示:

o merge commit - feature/master/default 
| \ 
| o  
| | 
| o 
|/
o 
| 
... 
+0

「更新」?這不就是快進合併嗎?它只是做一個更新?當然,Mercurial不會檢測到這一點,但我不認爲它會嘗試執行合併。 – 2013-03-15 08:04:27

+0

他在要求一個沒有快進的替代方案,而不是一個快速替代方案。 :) – 2013-03-15 08:12:11

+0

如果你找不到任何東西,在合併之前會在主文件中提交一個虛擬產品,產生你想要的東西嗎? – 2013-03-15 10:16:36

回答

7

這取決於您如何提交功能分支。

如果該功能是在命名分支上開發的,那麼您可以獲得相當於沒有快進合併的功能。事實上,命名分支不能以其他方式合併。

hg update default 
hg branch feature-1 
...work... 
hg commit -m "implemented feature on named branch" 
hg update default 
hg merge feature-1 
hg commit -m "merged feature-1 to default" 

這將導致這樣的曲線圖:

o merged feature-1 to default 
|\ 
| o feature-1: implemented feature on named branch 
|/ 
o 
| 

與名爲分支這僅適用於(即分支使用hg branch命令創建)。它不適用於匿名分支機構或書籤。

您可能也有興趣在討論該問題的Mercurial郵件列表中的this thread(死鏈接)

+0

對於那些真正喜歡合併變更集的「標點」來合併特徵的人來說,這將是一個想法。你有一個叫做'newfeature'的命名分支,然後在那個分支中有幾個書籤。 – Omnifarious 2013-03-16 03:10:33

+0

到目前爲止,這個答案的最好部分是最後一行。 – Ringding 2013-03-18 12:29:17

+0

您可以使用'debugsetparents'命令在匿名頭部進行Mercurial中的Oedipus合併。請參閱:http://hgtip.com/tips/advanced/2010-04-23-debug-command-tricks/#3-simulate-gits-no-ff-merges-with-anonymous-heads。不過,我認爲調試命令並沒有給予Mercurial其餘部分的兼容性保證。 – jwd 2015-04-09 17:28:35