2014-06-06 66 views
0

最近我的一位同事嫁接了一個提交,它改變了.hgsubstate中的一個(三個)子庫。移植物,而不是改變所有這三個匹配原變更(即使他們是從以前的一個變化):手動重複mercurial移植步驟

changeset main: 
f60c22f43d335e95a95301aee58a092b63800e4b external/a 
26e615cf033cffa9fba77d2369e3802cc2b9a95e external/b 
ca46ca7e5243439de09a2d14ffa60432c6c56d74 external/c    

diff of changeset grafted: 
7fe8fcdd7648e14bee5889a4b3155fde49f09de4 external/a 
5b90cf021b0006c8681247a73e9940f835a959f4 external/b 
-8479ff0a18dc684db7f0771ace700915c51e92e6 external/c 
+69e97bdab56155fee6ab4d0d21bbf36b34b040f8 external/c 

final graft: 
7fe8fcdd7648e14bee5889a4b3155fde49f09de4 external/a 
5b90cf021b0006c8681247a73e9940f835a959f4 external/b 
69e97bdab56155fee6ab4d0d21bbf36b34b040f8 external/c    

看來,移植物替換該文件的批發,不只是它的具體變化。這與我對移植應該做什麼的直覺相反。更糟糕的是,即使我使用-t internal也會這樣做:失敗它不會讓我合併任何東西。

我至少想知道爲什麼這個不幸的合併正在發生,所以我們可以在將來避免它。我試圖用玩具的例子重現問題,但我失敗了;因爲大約有350次提交/合併將兩個變更集分開,所以很可能我錯過了有問題的部分。

我的問題是:我可以讓mercurial輸出它採取的步驟來執行此移植嗎?或者以某種方式確定有問題的合併的來源?

+1

對於大多數'hg'命令,您可以添加'--debug'來讓它輸出更多的信息。我不知道這是否會讓你得到你需要的東西,但是是一個開始的好地方。 – Edward

回答