合并期间Mercurial删除文件

时间:2012-02-21 09:45:50

标签: mercurial merge

我有一个名为“develop”的分支,其中包含一个版本号为500的文件,其中包含a.java和b.java。

步骤 - a.java已从开发中删除,然后被推送(501)。 - 从501创建一个分支(my_branch); - 在my_branch中我添加了一个新版本的a.java和一个新文件c.java;

问题 当我尝试将my_branch与开发合并时,mercurial删除a.java。结果是my_branch与b.java和c.java;

我认为mercurial知道正在删除a.java,并且在没有提示警告的情况下删除该文件,即使我已经在my_branch中再次添加。

如何强制my_branch的文件合并?

2 个答案:

答案 0 :(得分:2)

我刚刚尝试了所描述的场景。 mercurial不会删除以前删除的文件的新版本。

重现的步骤:

  • 创建新的hg存储库
  • 创建新文件a.txt,提交更改 - 版本1
  • 删除文件a.txt,提交更改 - 版本2
  • 创建文件b.txt,提交更改 - 版本3
  • hg update -C 2
  • 更新至版本2
  • 再次创建新文件a.txt,提交更改(创建新头)

合并两个头导致文件a.txt和b.txt

答案 1 :(得分: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'