2011-10-31 25 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版)。