Ответ 1
Git 2.10 исправил это и теперь ведет себя так, как и следовало ожидать.
У нас есть это в нашем файле .gitattributes:
* text=auto eol=lf
Я хотел бы точно понять, что это делает.
Первая часть text=auto
. Из документа :
Это гарантирует, что все файлы , которые Git считает текстом, будут иметь нормализованные окончания строки (LF) в репозитории.
Важная часть состоит в том, что Git выполняет нормализацию только для файлов, которые он обнаруживает как текстовые файлы.
Однако я не уверен в части eol=lf
. Я бы подумал, что он также выполнит нормализацию только для текстовых файлов, но я не могу найти поддержку для него в документации, и у нас был экземпляр, когда наши файлы PNG также были нормализованы, что сделало их недействительными.
Есть ли такие настройки, как указано выше, которые в основном говорят "выполнять нормализацию в обоих направлениях для текстовых файлов и оставлять только двоичные файлы"?
Git 2.10 исправил это и теперь ведет себя так, как и следовало ожидать.
Ответ: нет, Git в настоящее время (начиная с версии 2.3) не может выполнить проверку EOL с автоматическим обнаружением двоичных и текстовых форматов, чтобы он обрабатывал только текст. Обходной путь заключается в том, чтобы указать eol=lf
только для выбранных типов файлов (например, *.txt
) или, наоборот, отметить определенные типы файлов как двоичные, например, *.png binary
).
Связано: в списке рассылки Git
* text=auto
Это правильно нормализует текстовые файлы в репо. Однако Вторая часть (форсирование LF при оформлении заказа) сегодня не может быть достигнута потому что добавление
eol=lf
, к сожалению, также обработает двоичные файлы. Единственное решение сегодня - отметить определенные типы преобразования (например,*.txt eol=lf
) или, наоборот, маркировать определенные типы как двоичные (например,*.png binary
).Оба они страдают от одной и той же проблемы: конкретные типы файлов должны явно указывается в файле
.gitattributes
, что означает, что либо типы должны быть известны заранее, либо все разработчики должны не забудьте обновить файл.gitattributes
каждый раз, когда новый тип файла появляется в проекте. Которые они не будут.