2011-08-18 112 views
12

我是新來的mercurial,我讀過,它不可能合併另一個分支的一個單獨的變更集。 那我就不知道什麼是解決,最好的辦法:從另一個分支合併只有一個變更集

  1. 我開始有穩定的版本R1
  2. 我繼續R1發展:CS1,CS2,CS3
  3. 在某些時候,我需要解決我穩定版本R1中的錯誤。並且我想僅應用來自開發線的一個變更集(鐵CS2)

什麼是最好的方法?由於合併不起作用,我所做的就是創建一個CS2補丁,然後在新穩定分支中應用該補丁來修復該錯誤。這是Mercurial的方式?

乾杯,

+6

嫁接它:http://stackoverflow.com/questions/16898906/how-to-graft-with-tortoisehg –

回答

7

transplant extension自動化你做一個簡單的命令是什麼。

但我認爲首選的方式(取決於場景並不總是可行的)是首先將修補置於R1之上,然後將其合併到開發提示中。

即:

  1. 開始穩定版本R1
  2. 你做了一些工作,cs1...csN
  3. 一個重要的修復需要穩定在R1之上,所以你hg update R1
  4. 做的修復,這產量R2
  5. 回到你離開的地方,hg update csN
  6. 合併的穩定,所以你必須修復,hg merge R2hg commit ...
  7. 繼續在csN+1工作。
+0

指點滿分當移植工作的時候,當你做了一些不太理想的事情時,它可以作爲一種後備工具。如果你小心你的變更集的出身,你總能得到你想要的合併。 –

+1

這個答案已經過時,不再需要擴展,就像Hg 2.0一樣(見下面的答案) – Larzan

11

UPDATE:無需任何擴展了,因爲汞2.0

是「CAD傢伙」指出,這是graft命令正是爲這汞柱2.0中引入的。

SourceTree

要做到這一點,最簡單的方法是使用像SourceTree一個GUI,只是在目標分支雙擊切換,然後按上的任何其他修改鼠標右鍵並選擇「移植'命令(奇怪的是它也可以是當前分支的修訂)。 如果沒有衝突,SourceTree將立即爲當前分支創建一個新的修訂。

TortoiseHg

完全一樣,選擇目標分支,那麼人民幣在修訂要嫁接:How to graft with TortoiseHg

命令

要使用命令行這樣做只是切換到TARGET分支,然後執行

hg graft -r {revision_number} 

{revision_number}顯然是您想要合併到當前分支的版本號。這將在當前分支中創建一個新的變更集,其中包含修訂版中您在該命令中使用的所有文件。

要了解更多關於閱讀這個線程這裏的移植命令上stackoverflow

相關問題