Git merge: файлы фильтров, чтобы избежать глупых конфликтов (например, изменение пробелов или случаев)

В настоящее время я вхожу в очень сложное слияние в git, и у меня много конфликтов. Конфликт состоит из двух исходных файлов Ada.

Я хотел бы сделать слияние, которое игнорирует как изменения пробелов, так и изменения case (поскольку язык Ada нечувствителен к регистру). Вы знаете, есть ли способ сообщить git игнорировать какие-либо изменения перед слиянием?

Мое решение в настоящий момент заключается в том, чтобы запустить окончательный отпечаток GNAT на обеих ветвях до слияния, но если в git было общее решение, это мне очень помогло.

Ответы

Ответ 1

из примечания к выпуску git 1.7.4:

* "Рекурсивная" стратегия также научилась игнорировать различные пробелы    изменения; наиболее заметным является -Xignore-space-at-eol.

Я не знаю, есть ли стратегия игнорировать изменения в случае, если

Ответ 2

Что касается проблемы, которая является проблематичной для нечувствительных к регистру ОС во время слияния, это не будет проблемой при использовании git 2.0.1+ (25 июня 2014 г.).

См. передать ae352c7f37ef2098e03ee86bc7fd75b210b17683 Дэвид Тернер (dturner-tw)

merge-recursive.c: исправить ошибку слияния смены файла

В файловой системе без учета регистра, при слиянии, файл будет ошибочно удален из рабочего дерева, если входящий коммит переименовал его, изменив только его случай.
При слиянии переименования файл со старым именем будет удален, но поскольку файловая система считает, что старое имя будет таким же, как новое имя, новый файл на самом деле будет удален.

Мы избегаем этого, не удаляя файлы с клонированием case в индексе на этапе 0.