Git игнорирует флаг конфигурации autocrlf

#git #newline #gitattributes #core.autocrlf

#git #новая строка #gitattributes #core.autocrlf

Вопрос:

Я пытаюсь внести свой вклад в проект git, исходные файлы которого имеют окончания строк CRLF. При клонировании проекта git немедленно помечает все исходные файлы как измененные. Моя конфигурация:

 $ git config --list
push.default=simple
user.email=xxxx.xxxx@xxxx.xxx
user.name=xxxx
merge.defaulttoupstream=true
merge.tool=kdiff3
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.autocrlf=false
remote.origin.url=xxxx.git
remote.origin.fetch= refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
  

Как показано выше, значение autocrlf равно false, что должно указывать git игнорировать окончания строк.

В проекте есть .gitattributes файл, который выглядит следующим образом:

 # Sources
*.c   text eol=crlf
*.cc  text eol=crlf
*.cxx text eol=crlf
*.cpp text eol=crlf
*.CPP text eol=crlf
*.c   text eol=crlf
*.hpp text eol=crlf
*.HPP text eol=crlf
*.h   text eol=crlf
*.H   text eol=crlf
*.h   text eol=crlf
*.hh  text eol=crlf

# Project files
*.sln     text eol=crlf
*.sdf     binary
*.opensdf binary
*.suo     binary
*.vcxproj         text eol=crlf
*.vcxproj.filters text eol=crlf
*.vcxproj.user    text eol=crlf

# Compiled Object files
*.slo binary
*.lo binary
*.o binary
*.obj binary

# Precompiled Headers
*.gch binary
*.pch binary

# Compiled Dynamic libraries
*.so binary
*.dylib binary
*.dll binary

# Compiled Static libraries
*.lai binary
*.la binary
*.a binary
*.lib binary

# Executables
*.exe binary
*.out binary
*.app binary
  

После клонирования проекта файлы имеют окончания строк CRLF, как и должны:

 $ file src/charbuf.cpp 
src/charbuf.cpp: C source, Non-ISO extended-ASCII text, with CRLF line terminators
  

Есть идеи, почему git по-прежнему помечает их как измененные?

Комментарии:

1. Нет ответов? Вам нужна дополнительная информация?

2. git diff Показывает ли a, что окончания строк изменились? Есть ли у вас smudge фильтр, действующий на файлы при их извлечении?

3. git diff показывает различия для всех файлов, но в выходных данных отсутствуют типичные ^M символы, поэтому обе версии выглядят одинаково. Что такое фильтр размытия?

4. Фильтры размытия описаны здесь: git-scm.com/book/en/v2/Customizing-Git-Git-Attributes (Поиск These are called “clean” and “smudge” filters )

5. Кроме того, каков результат git config --list --show-origin | grep -i autocr ? (Это должно показать все настройки autocrlf и файлы конфигурации, которые являются источником каждой из этих записей)