Git с autocrlf=false по-прежнему выдает предупреждение: CRLF будет заменен сообщениями LF.

Я использую Git версии 1.9.1 на Ubuntu 14.04.

Я протестировал поведение core.autocrlf в свежем репозитории с файлом в формате DOS и файлом в формате Unix и подтвердил, что git add с autocrlf=true, как и ожидалось, выдает предупреждение: LF will be replaced by CRLF in ... сообщение для файла в формате Unix и не выдает сообщений для любой файл, когда autocrlf=false. (В данном случае мне непонятно, почему было решено использовать в репозитории окончания строк DOS, а не Unix, но я не уверен, что это важно здесь.)

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

$ git config core.autocrlf
false
$ git add lib/node_modules/pulp/node_modules/webpack/node_modules/webpack-core/node_modules/source-list-map/test/fixtures/from-to-tests/null-source.input.map
warning: CRLF will be replaced by LF in lib/node_modules/pulp/node_modules/webpack/node_modules/webpack-core/node_modules/source-list-map/test/fixtures/from-to-tests/null-source.input.map.
The file will have its original line endings in your working directory.
$

Я не могу понять, почему он это делает. Я ищу либо объяснение проблемы, либо подсказки о том, как ее отладить.

Дополнительные примечания:

  • Нет, в репозитории нет файла .gitattributes. Но это поднимает интересный вопрос, должно ли это иметь значение, если autocrlf установлено в false?
  • И нет, я только что внимательно проверил, и файл имеет 0x0a после каждого 0x0d и 0x0d перед каждым 0x0a.

person cjs    schedule 02.06.2016    source источник
comment
Есть ли файл .gitattributes?   -  person poke    schedule 02.06.2016
comment
Есть ли файлы .gitattributes? Если да, то какие параметры они указывают?   -  person torek    schedule 02.06.2016
comment
В файле есть смесь CRLF и LF?   -  person Chananel P    schedule 02.06.2016
comment
Обновлен вопрос, чтобы ответить на ваши хорошие вопросы. Спасибо.   -  person cjs    schedule 03.06.2016
comment
Но это поднимает интересный вопрос, должно ли это иметь значение, если для autocrlf установлено значение false? Судя по всему, так и есть. Я получил такое же сообщение и имел core.autocrlf false. Но в моем случае действительно был файл .gitattributes, содержащий строку * text=auto. Как только я удалил его, предупреждение о преобразовании (и, надеюсь, само преобразование) исчезло.   -  person Jānis Elmeris    schedule 05.12.2016


Ответы (1)


Во-первых, установка core.autocrlf на false часто является хорошей идеей: см. "строка обработки, заканчивающаяся на GIT".

Во-вторых, убедитесь, что core.autocrlf действительно имеет значение false при запросе в родительской папке файла для добавления:

git -C lib/node_modules/[...]/fixtures/from-to-tests/ config core.autocrlf

Также проверьте, что проблема не исчезнет сегодня (июнь 2018 г., Git 2.17.1)

В-третьих, это предупреждение появилось в феврале 2008 г. (Git v1.5.5) в commit 21e5ad5 автор Стеффен Прохаска (sprohaska).

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

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

Наконец, хороший способ обнаружить файлы Git 2.8 (март 2016 г.), затронутые настройкой eol, — это использовать:

git ls-files --eol

См. "git показывает измененные файлы, но я ничего не менял, и git reset не работало".

person VonC    schedule 16.06.2018