2012-02-21 42 views
2

我有一個名爲「開發」的分支,具有一定的狀態o文件的版本號爲500,內部帶有a.java和b.java。合併期間的Mercurial刪除文件

步驟 - a.java已從開發中刪除,然後按下(501)。 - 從501創建分支(my_branch); - 在my_branch中我添加了新版本的a.java和新文件c.java;

問題 當我嘗試合併my_branch與開發,mercurial刪除a.java。結果是帶有b.java和c.java的my_branch;

我認爲mercurial知道先前刪除了a.java,並且在沒有提示警告的情況下刪除文件,即使我在my_branch中再次添加了該文件。

如何強制my_branch的文件被合併?

回答

2

我剛剛嘗試過描述的場景。 mercurial不刪除以前刪除的文件的新版本。

重現步驟:

  • 創建新汞柱庫
  • 創建新的文件a.txt中,更改提交 - 第1版
  • 刪除文件a.txt中,更改提交 - 第2版
  • 創建文件b.txt,提交更改 - 版本3
  • 更新到版本2,作者hg update -C 2
  • 再次創建新文件a.txt,co MMIT變化(創造了新的頭)

合併兩個頭導致文件a.txt中和b.txt

0

我與@ bbaja42是有一些細節在你的描述丟失 - 這不發生在正常使用中。

也就是說,這很容易解決 - 只需在提交合並之前放置所需的文件 - 合併總是在Mercurial中手動提交。

hg update my_branch 
hg merge developing 
hg revert -r my_branch a.java 
hg add a.java # might be unnecessary, but it can't hurt 
hg commit -m 'committed the merge with a.java from my_branch in place'