在Mercurial中合并时忽略不存在的文件

时间:2011-05-25 18:56:01

标签: mercurial merge

我正在使用具有稳定和实验分支的存储库。有时我在实验分支上添加一个尚未为稳定分支准备的文件。当我合并时,我想合并两个分支共有的文件中的更改,但忽略其中一个分支上不存在的文件。

这是一个简单的例子:

hg init
hg branch stable
(create file A)
hg add A
hg commit -m "Added A"

hg branch exp
(create file B)
hg add B
hg commit -m "Added B, which is really experimental"

(modify file A)
hg commit -m "Some changes to A"

hg update stable
hg merge exp

但是我更改了合并工具配置,Mercurial似乎总是将B与合并一起使用。由于它不存在于稳定分支上,因此它永远不会发生冲突。

我可以做以下事情:

hg update stable
hg merge exp
hg commit -m "Merged"
hg revert -r 0 B

但这需要我知道哪些文件需要还原。

关于最简单的合并方式的想法忽略了一个分支上不存在的文件,最好是自动执行吗?

1 个答案:

答案 0 :(得分:1)

你不能要求Mercurial做你想做的事。

您不合并单个文件,合并整个分支,这意味着作为分支一部分的所有文件都将成为合并的一部分。这就是Mercurial的设计方式及其运作方式。

现在,可以 在提交之前恢复/忘记/删除您不想要的文件,但之后您只是为灾难做好准备。

我建议您将想要保留的内容与您不知道的内容分开,以便您可以合并一个分支,让另一个分支暂时分开。