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

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

* text=auto eol=lf

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

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

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

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

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

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


person Borek Bernard    schedule 03.04.2015    source источник


Ответы (2)


Git 2.10 исправил это и теперь работает. как и следовало ожидать.

person Borek Bernard    schedule 05.12.2016
comment
Мой клиент Git был в версии 2.9.15, обновление до последней версии 2.15 решило мою проблему. Спасибо - person Nounours; 17.01.2018

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

Связано: предложение функции в списке рассылки Git


* text=auto

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

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

person Borek Bernard    schedule 08.04.2015