2011-01-11 55 views
4

我在存儲庫上使用Mercurial Queues,並將這些修補程序放入修補程序存儲庫。另一個貢獻者克隆了我的補丁隊列並對其進行了修改。我現在想要將他們的更改合併到我的本地修補程序存儲庫中。Mercurial Queues:合併來自多個存儲庫的修補程序

我試圖找到一個好的工作流程進行這種合併是

  • 體現了出資人的變更在修補程序存儲庫
  • 歷史中的衝突情況下調用用戶的合併工具

最初,我只是試圖直接合並補丁。在非常簡單的情況下,這是可以的,但在許多事情發生變化時效果不佳,因爲修補程序取決於行號上下文,這看起來不像是我應該擔心的調整自己。總體而言,我發現檢查補丁的3種差異太複雜。

有沒有更好的方法?

回答

1

沒有很好的方法來處理這個問題。我最終可能會做的是創建兩個克隆,並將其中一個修補程序和另一個修補程序中的修補程序修補程序組合起來。那個時候,你將擁有每個獨立補丁的淨效應。然後你將其中一個克隆插入另一個,hg merge將讓你使用你的圖形工具合併補丁的結果 - 唯一的區別應該是你的補丁差異。在這一點上,理想情況下,你將能夠合併變更集qimport,但你不能這樣做,所以你必須'hg diff -r tip-1 -r tip'來獲得一個新的差異,這是差異在一切開始之前和兩個結果合併之後。然後你'qimport`那個差異並且將它提交到你的補丁隊列倉庫,並附上一個說明它來自哪裏的說明。

絕對不是最理想的,但最好的我可以拿出來。我很想聽到更好的解決方案。

+0

這基本上是我發生的唯一計劃,但我希望別人可能有更好的主意。這個經驗讓我感興趣的是使用[pbranch](http://arrenbrecht.ch/mercurial/pbranch/index.htm)而不是MQ,因爲它似乎爲這個流提供了更好的支持,因爲這些補丁只是常規分支。 – 2011-01-12 21:28:39

+0

我只是使用真正的提交而不是修補程序,如果我正在與其他人一起處理更改。即使我們從未將該克隆推回「上游」,它也爲我們提供了一個工作場所和良好的合併工具,並且如果從「上游」引入更改,然後我們可以稍後導入「hg diff」以向上遊發送,則可以輕鬆進行。 – 2011-01-13 15:41:14

0

恐怕沒有自動合併補丁的方法。

但是,您可以使用的一個「技巧」是創建新的修補程序,而不是在需要修改它們時編輯/刷新現有修補程序。當你們都以正確的方式同意做事情時,那麼hg qfold的補丁。

這樣你就不會踩到其他腳趾,因爲你創建了新的補丁。

相關問題