2014-06-06 42 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

回答