Что будет делать `* text = auto eol = lf` в gitattributes?

У нас есть это в нашем файле .gitattributes:

* text=auto eol=lf

Я хотел бы точно понять, что это делает.

Первая часть text=auto. Из документа :

Это гарантирует, что все файлы , которые Git считает текстом, будут иметь нормализованные окончания строки (LF) в репозитории.

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

Однако я не уверен в части eol=lf. Я бы подумал, что он также выполнит нормализацию только для текстовых файлов, но я не могу найти поддержку для него в документации, и у нас был экземпляр, когда наши файлы PNG также были нормализованы, что сделало их недействительными.

Есть ли такие настройки, как указано выше, которые в основном говорят "выполнять нормализацию в обоих направлениях для текстовых файлов и оставлять только двоичные файлы"?

Ответ 2

Ответ: нет, Git в настоящее время (начиная с версии 2.3) не может выполнить проверку EOL с автоматическим обнаружением двоичных и текстовых форматов, чтобы он обрабатывал только текст. Обходной путь заключается в том, чтобы указать eol=lf только для выбранных типов файлов (например, *.txt) или, наоборот, отметить определенные типы файлов как двоичные, например, *.png binary).

Связано: в списке рассылки Git


* text=auto

Это правильно нормализует текстовые файлы в репо. Однако Вторая часть (форсирование LF при оформлении заказа) сегодня не может быть достигнута потому что добавление eol=lf, к сожалению, также обработает двоичные файлы. Единственное решение сегодня - отметить определенные типы преобразования (например, *.txt eol=lf) или, наоборот, маркировать определенные типы как двоичные (например, *.png binary).

Оба они страдают от одной и той же проблемы: конкретные типы файлов должны явно указывается в файле .gitattributes, что означает, что либо типы должны быть известны заранее, либо все разработчики должны не забудьте обновить файл .gitattributes каждый раз, когда новый тип файла появляется в проекте. Которые они не будут.