2011-10-31 36 views
1

我有这样的分支树:branches tree合并行为是否正确?

,现在我想从默认分支(52转)合并max.grigoriev.test分支(49转)

这里是49个变化(我加test.css有):

49 rev

先前的合并51转后

结果(加入test.css)

enter image description here

但在接下来的52转我决定删除test.css

enter image description here

而我期待合并后的52至49是在我的分支一个新的PHP文件(adtweaker_view.php)和test.css应该被删除。但善变的只是增加了一个新的PHP文件,并不会删除test.css

merged tree

merged result

我不明白为什么?

+0

所以你有两个分支。一个添加,然后删除一个文件,另一个刚刚添加它。你确定你没有在合并中发生冲突吗? –

+0

是的,我在A分支中添加了一个文件,然后我将它+ C分支合并到了B分支,然后删除了B分支中的文件并尝试将B合并回A,并且我刚收到C分支(在B中合并)并且在添加/删除的文件上没有冲突。 –

+0

在两个分支上更改某些内容并将其重新添加到一个分支上会导致非常混乱的行为。我认为这是一个错误:http://mercurial.selenic.com/bts/issue1327 我不确定这是否应该在此期间修复;通读这个问题的评论并没有说清楚。 – Ringding

回答

0

test.css:

  1. 该文件在黄色分支加入(修订版49)。
  2. 在蓝色分支中,文件首先被添加(51版),然后被移除(52版)。结果就好像蓝色分支中没有发生任何事情。

将蓝色分支合并到黄色分支中导致蓝色分支中没有发生任何变化。因此,这个文件的合并结果是正确的。

adtweaker_view.php:

  1. 文件adtweaker_view.php未在任何上述修订补充,因此它不能像你说的新的,可以吗?
  2. 该文件在蓝色分支中修改(rev 51)。

将蓝色分支合并到黄色分支将按照(2)修改文件。因此,这个文件的合并结果是正确的。

adreplicator_view.php

  1. 该文件仅在蓝色分支改性(修订版51)

蓝色分支的合并成黄色分支应当导致文件的修改。因此,你的合并结果是不正确的!这似乎是你的mercurial application忘记了adreplicator_view.php修改(51版)。