Игнорировать пробелы только для определенных расширений файлов при слиянии

У меня есть эта команда

git merge -Xignore-all-space origin/dev

меня немного пугает b/c. Я боюсь слияния файла, где пробелы имеют значение. Есть ли способ ограничить его некоторыми файлами, что-то вроде этого:

git merge -Xignore-all-space *.js origin/dev

Ответ 1

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

Тем не менее, *.js -whitespace, о котором я упоминал в 2009 году, может не применяться во время слияния.

Поскольку ignore-all-space является первым параметром git diff, вам может потребоваться настроить драйвер diff в .gitattributes (опять же, только для файлов *.js), эмуляции - --word-diff-regex

Используйте <regex> чтобы решить, что такое слово, вместо того, чтобы рассматривать пробеги non -whitespace как слова

Каждое неперекрывающееся совпадение считается словом. Все, что между этими совпадениями считается пробельным и игнорируется (!) Для целей поиска различий.

Вы можете захотеть добавить в свое регулярное выражение значение |[^[:space:]] чтобы убедиться, что оно соответствует всем символам, отличным от -whitespace. Сопоставление, содержащее новую строку, тихо усечено (!) В новой строке.

Например (чтобы быть подстроенным, чтобы соответствовать тому, что вам нужно в файле javascript для diff без пробелов)

*.js    diff=js
[diff "js"]
    wordRegex = "[^[:space:]]+"