Почему я должен использовать ядро autocrlf=true в Мерзавце?

У меня есть репозиторий Мерзавца, к которому получают доступ и из Windows и из OS X, и что я знаю, уже содержит некоторые файлы с окончаниями строки CRLF. Насколько я могу сказать, существует два способа иметь дело с этим:

  1. Набор core.autocrlf кому: false везде,

  2. Следуйте инструкциям здесь (отраженный на страницах справки GitHub) для преобразования репозитория, чтобы содержать только окончания строки LF и после этого установить core.autocrlf кому: true в Windows и input на OS X. Проблема с выполнением этого является этим, если у меня есть какие-либо двоичные файлы в репозитории что:

    1. правильно не отмечены как двоичный файл в gitattributes, и
    2. окажись, содержать и CRLFs и LFs,

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

Итак, почему я не должен только выключать заканчивающее строку преобразование Мерзавца? Существует много неопределенных предупреждений в сети о наличии core.autocrlf выключенные проблемы порождения, но очень немного определенных; единственные, которые я нашел до сих пор, - то, что kdiff3 не может обработать окончания CRLF (не проблема для меня), и что некоторые текстовые редакторы имеют заканчивающие строку проблемы (также не проблема для меня).

Репозиторий является внутренним к моей компании, и таким образом, я не должен волноваться о совместном использовании его с людьми с различными autocrlf настройками или заканчивающими строку требованиями.

Есть ли какие-либо другие проблемы только с отъездом окончаний строки как есть, что я не знаю?

271
задан Community 23 May 2017 в 02:10
поделиться

1 ответ

Единственные конкретные причины установить autocrlf в true это:

  • чтобы git status не показывал все ваши файлы как измененные из-за автоматического преобразования EOL, выполняемого при клонировании Unix-based EOL Git repo в Windows-репо (см. issue 83, например)
  • и ваши инструменты кодирования каким-то образом зависят от наличия родного стиля EOL в вашем файле:

Если вы не видите конкретных процедур, которые должны иметь дело с родным EOL, вам лучше оставить autocrlf на false (git config --global core.autocrlf false).

Обратите внимание, что этот конфиг будет локальным (потому что конфиг не передаётся из репозитория в репозиторий)

Если вам нужен одинаковый конфиг для всех пользователей, клонирующих этот репозиторий, посмотрите "Какая лучшая стратегия работы с CRLF в git?", используя text атрибут в .gitattributes файле.

Пример:

*.vcproj    text eol=crlf
*.sh        text eol=lf

Примечание: начиная с git 2.8 (март 2016), маркеры слияния больше не будут вводить смешанное окончание строки (LF) в файл CRLF.
См. "Заставьте Git использовать CRLF в строках слияния "<<<<<<< HEAD""

202
ответ дан 23 November 2019 в 02:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: