2009-10-26 79 views
7

基本上,我有開發分支,我喜歡做的是創建一個功能分支,而我實現的東西,然後將其合併回來。所以發生如下情況:Can Mercurial可以合併不是頭的命名分支嗎?

a 
b 
c 
d - dev 
/
e 
f - feature 

由於dev不是頭,是否仍可以將dev設置爲使得dev和feature都指向f?

我敢肯定的git可以做到這一點就好了,但似乎無法說服水銀做同樣的...

回答

19

Carl Meyer是對的。你正在考慮作爲一個git用戶,而Mercurial則以不同的方式處理事情。

你可以做什麼卡爾建議,只是強制下一個提交在開發分支。如果我看到它,我個人會覺得這很容易混淆,因爲開發分支中會出現不連續性。

我處理的方式是到特性分支合併回:hg update dev && hg merge feature && hg commit -m 'Merge in the completed feature.'

這將導致像圖:

a - dev 
    b - dev 
    c - dev 
    d - dev 
/| 
e | - feature 
f | - feature 
\| 
    g - dev 

對於我來說,這清楚地說明到底發生了什麼。您完成後分支出一個新功能並將其合併到開發分支中。在此期間沒有其他開發提交的事實只是一個巧合,並不需要改變工作流程。

+0

嗯。我一直在努力做你的方法,但我不記得我做錯了什麼。也許我會多花一點時間來看看我是否弄明白了。 謝謝你們倆! – Calyth 2009-10-26 22:30:19

+0

嗯。這工作。謝謝史蒂夫! – Calyth 2009-10-27 16:50:58

+0

你在哪個分支上運行該命令?開發?如果在特性 – 2010-12-03 14:03:06

6

命名分支汞(不像GIT)沒有「點」任何地方。分支名稱對於特定的rev是不可移動的別名。每個提交都有一個元數據標記,命名提交所在的分支;就這樣。

在這種情況下,如果在dev分支上沒有單獨的提交從「d」開始單獨提交,那麼只需運行「hg branch dev」,然後下一個提交,從「f」將回到分支機構。我認爲這將實現您正在尋找的結果。

編輯:這樣會有效,但史蒂夫洛什提出的做實際合併的建議會帶來更明智的歷史。

相關問題