Mar*_*uer 7 merge mercurial whitespace
我们在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."
Run Code Online (Sandbox Code Playgroud)
这导致两个分支,一个具有空白更改,另一个具有文本更改:
@ 2 " This is text".
|
|
| o 1 "This is some more text."
|/
|
o 0 "This is text."
Run Code Online (Sandbox Code Playgroud)
在尝试hg merge此操作时,我遇到了合并冲突.如果我们在每一行都有冲突,那么解决"真正的"冲突就变得困难和耗时.我更喜欢的是合并过程认为"好的,变更集2第1行与空格仅在空格中有所不同,所以考虑不变.选择变更集1第1行作为合并结果."
Ry4*_*ase 10
忽略空格是合并工具的选择.您可以配置所有合并工具以与mercurial一起使用,如下所示:MergeToolConfiguration
Mercurial的内部预合并不会/不能忽视的空白,但如果你的外部合并工具不和它发现只有空白变化,它会立即退出,如果发现其他是空白改变它可以隐藏空白改变时,它加载.
例如,使用流行的kdiff3合并工具,您可以启用"白色空间2/3文件合并"设置,并告诉它是向左还是向右选择.
Tl; Dr:在合并工具中打开它,而不是在mercurial中.