在 Mercurial 中进行合并时,我们遇到了一个问题,其中空白更改会导致合并冲突,从而掩盖了我们可能遇到的任何“真实”冲突,并使合并成为一场噩梦。我们最近遵循了一种格式样式,该样式更改了某些分支中文件的缩进,并且从那时起合并几乎变得不可能。
举个例子,尝试:
hg init testrepo
cd testrepo/
echo "This is text." > newfile.txt
hg add newfile.txt
hg commit -m "Created a file."
hg branch newbranch
echo "This is some more text." > newfile.txt
hg commit -m "Changed text in the file."
hg update default
echo " This is text." > newfile.txt
hg commit -m "Added indentation whitespace."
这会产生两个分支,一个分支包含空格更改,另一个分支包含文本更改:
@ 2 " This is text".
|
|
| o 1 "This is some more text."
|/
|
o 0 "This is text."
当尝试一个hg merge
对此我遇到了合并冲突。如果我们在每一条线上都存在冲突,那么解决“真正的”冲突就会变得困难且耗时。我更希望合并过程认为“好吧,变更集 2 第 1 行与父级仅在空白方面有所不同,因此请考虑它不变。选择变更集 1 第 1 行作为合并结果。”
是否忽略空格是合并工具所做的选择。您可以配置所有方式的合并工具以与 Mercurial 一起使用,如下所示:合并工具配置 https://www.mercurial-scm.org/wiki/MergeToolConfiguration
Mercurial 的内部预合并不会/不能忽略空格,但如果您的外部合并工具忽略空格并且它只发现空格更改,它将立即退出,如果它发现其他空格更改,它可以隐藏空格更改。加载。
例如,与流行的kdiff3 合并工具 http://kdiff3.sourceforge.net/您可以启用“空白 2/3 文件合并”设置并告诉它是选择左侧还是右侧。
Tl;Dr:在合并工具中打开此功能,而不是在 Mercurial 中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)