Мы сталкиваемся с проблемой при слиянии в 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
на этом я получаю конфликт слиянием. Если у нас есть конфликты на каждой линии, становится трудным и трудоемким разобраться в "реальных" конфликтах. Я бы предпочел, чтобы процесс слияния думал: "ОК, changeet 2 строка 1 отличается от родительского только в пробеле, поэтому считайте его неизменным. Выберите changeet 1 строку 1 как результат объединения".