在Mercurial中合并时排除文件

时间:2012-06-04 09:35:19

标签: mercurial merge tortoisehg

我使用Mercurial和TortoiseHg。我有两个分支(AB),包含两个文件(toto.cstiti.cs)。

当我想将BA合并时,是否有办法排除titi.cs合并,只合并toto.cs?如果有可能,我该怎么做?

2 个答案:

答案 0 :(得分:6)

不确定。不合并titi.cs实际上只是使用titi.cs,就像它存在于A或B中一样(您的选择)。你可以这样做手动

hg update A
hg merge B
hg revert --rev A titi.cs

(交换A和B去另一个方向) 或者您可以在.hgrc中使用[merge-patterns] titi.cs = internal:local 中的<{>}自动

{{1}}

这告诉Mercurial总是使用“this one not that one”来匹配该模式的文件。

答案 1 :(得分:3)

如果您正在谈论某个您希望免于合并的文件,请参阅@Ry4chan's answer。这是完全有效的:一些文件,如与构建相关的配置,可以自动生成,并且它们的冲突解决是无用的。或者,您可能实际上想要删除源文件中所做的更改。

另一方面,如果您试图模仿类似SVN的系统的文件或目录限制合并,请小心。 revert技巧并不意味着你合并了一些文件并且没有合并其他:你合并了所有内容,revert只是一种合并。

如果要将某些更改从一个分支移动到另一个分支(例如,将某个子系统中的修补程序后退到旧的稳定分支),则不要将这些文件与修复程序合并;相反,您合并包含修复的更改集; hg graft会帮助您这样做。