兩個分支我有一個Mercurial庫的歷史,看起來像這樣:拆分線性的歷史成水銀
A -> B -> C -> N1 -> N2 -> N3 -> D -> E -> F
而且我想將它轉變成以下病史:
A -> B -> C -> D -> E -> F
\_ N1 -> N2 -> N3
鑑於我有一個克隆,它的歷史停在C處,最好的方法是什麼? D E F變更集與N1 N2 N3變更集不衝突。那麼,至少我希望如此;)
兩個分支我有一個Mercurial庫的歷史,看起來像這樣:拆分線性的歷史成水銀
A -> B -> C -> N1 -> N2 -> N3 -> D -> E -> F
而且我想將它轉變成以下病史:
A -> B -> C -> D -> E -> F
\_ N1 -> N2 -> N3
鑑於我有一個克隆,它的歷史停在C處,最好的方法是什麼? D E F變更集與N1 N2 N3變更集不衝突。那麼,至少我希望如此;)
沒有必要有一個克隆,你可以在原來的回購工作。您可以將D,E和F移植到C的頂部,創建副本D1,E1和F1(如果沒有衝突的變化,它們將與原始文件相同)。你會有這樣的:
A -> B -> C -> N1 -> N2 -> N3 -> D -> E -> F
\_ D1 -> E1 -> F1
然後你可以去掉原件。請參閱下面的腳本。
$ hg update C
$ hg transplant D E F
$ hg strip D
你必須使兩個擴展:transplant
和mq
。要做到這一點,這些行添加到您的hgrc
:
[extensions]
transplant=
mq=
更新:由於水銀2.0,graft
(內置命令)可以用來代替transplant
這裏;如Laurens Holst suggests,應該工作得很好。
您可以使用rebase
此:
hg rebase --source D --dest C
這可以作爲水銀2.0;此前,它曾經投訴到重新修訂祖先版本時,但他們刪除了該版本。
您必須啓用,如果您尚未:
[extensions]
rebase =
看來你只需要衍合上的C頂部d,你甚至不需要克隆。一些GUI可能會讓你做到這一點。我不知道確切的命令,但MQ擴展名用於重新綁定,將DEF拆分爲隊列並將其粘貼回C. – 2011-12-11 21:36:00
@herby我不認爲'rebase'命令將幫助shodanex完成任務,所以我不會用_rebasing_來描述解決方案。除此之外,我認爲「移植」更簡單,但「mq」同樣適用。 – Helgi
我並不知道第二個項目:「有些情況下不允許重新定位過程: - 重新定位點(源)是目標的祖先 - 重新定位點(源)是目標的後代 「。 – 2011-12-11 22:08:14