Мы сталкиваемся с проблемой при слиянии в 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
на этом я получаю конфликт слияния.Если у нас есть конфликты на каждой линии, становится трудно и трудно разобраться в «реальных» конфликтах.Что бы я предпочел, чтобы процесс слияния подумал: «Хорошо, строка 1 ревизии 2 отличается от родительской только в пустом пространстве, поэтому считайте ее неизменной. В качестве результата слияния выберите строку 1 ревизии 1».