Настроить репозиторий git так, чтобы все файлы сохранялись с окончанием строки LF (не CRLF)?

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

Кроме того, раскрывающиеся файлы репо должны сохранять окончание строки LF на клиентах OSX или Windows.

Это возможно ?


person BaltoStar    schedule 17.12.2014    source источник


Ответы (2)


Попробуйте добавить файл с именем .gitattributes со следующим содержимым:

*  eol=lf

к вашему репозиторию. Тогда какие бы настройки для core.autocrlf ни использовали разработчики, все файлы всегда будут использовать LF.

Просто имейте в виду, что он изменит CRLF на LF при фиксации также в двоичных файлах (таких как zip, jar, png и т. д.).

person Włodzimierz Gajda    schedule 17.12.2014
comment
как согласовать ваш ответ с ответом выше от nneonneo? - person BaltoStar; 17.12.2014
comment
На мой взгляд, ответ, который я дал, правильный. С файлом .gitattributes настройки клиента core.autocrlf не имеют значения. - person Włodzimierz Gajda; 17.12.2014
comment
Ах, тот факт, что он изменит CRLF на LF в двоичных файлах, означает, что он их испортит, возможно, молча. Это совсем не желательно... - person nneonneo; 17.12.2014
comment
Вам понадобится маска имени файла, чтобы избежать преобразования двоичных файлов: *.txt eol=lf, *.css eol=lf. Тихо? С git вы не можете изменить файл молча - все будет видно с git status. - person Włodzimierz Gajda; 17.12.2014
comment
Другим полезным способом избежать непреднамеренного преобразования может быть правило some/dir/ binary (для размещения в gitattributes). Он обозначает все содержимое каталога как двоичное. Git не будет применять преобразование новой строки к файлам под some/dir/. - person Włodzimierz Gajda; 17.12.2014
comment
Он НЕ обязательно будет преобразовывать окончания строк в двоичные файлы. В Git есть эвристика для автоматического обнаружения двоичных файлов. Достаточно ли хороши эти эвристики для вас или нет, это другой вопрос or-as-text" title="как определить, обрабатывает ли git файл как двоичный или как текст"> stackoverflow.com/questions/6119956/ См. также help.github.com/articles/dealing-with-line-endings - person Philip Daniels; 17.12.2014
comment
Да, git использует эвристику, чтобы квалифицировать файл как текстовый или двоичный. Но эти эвристики отключаются, когда вы используете eol в .gitattributes. Вот выдержка из git help attributes: Он позволяет выполнять нормализацию конца строки без каких-либо проверок содержимого, фактически устанавливая текстовый атрибут. - person Włodzimierz Gajda; 17.12.2014
comment
Мой плохой... ты прав, Влодзимеж. Протестировано путем вставки пары CRLF в файл PNG, затем ее проверки и клонирования в новый каталог. На самом деле это немного шокирует. - person Philip Daniels; 17.12.2014

Вы не можете на самом деле контролировать то, что делают ваши клиенты - если у них core.autocrlf установлено на true, тогда LF будет автоматически переведен в CRLF.

Если все используют core.autocrlf = input, то все должно работать нормально.

person nneonneo    schedule 17.12.2014
comment
как согласовать ваш ответ с ответом ниже от Влодзимежа Гайды? - person BaltoStar; 17.12.2014