Из-за некоторых проблем со сторонней библиотекой, которую я использую, у меня есть требование никогда не выполнять автоматическое преобразование концов строк для моего репозитория Git.Требуется, чтобы любой код, который я нажимаю или извлекаю, имел одинаковые окончания строк, хранящиеся в моей рабочей области и на удаленном компьютере (т. Е. Оба параметра <CR><LF>
и <LF>
должны всегда оставаться неизменными).
СледующееКонфигурация Git позволяет это:
core.autocrlf false
Чтобы уменьшить зависимости среды между разработчиками, я решил использовать файл .gitattributes
для настройки этого, как описано в этот ответ
* text=false
Проблема, с которой я столкнулся, заключается в первоначальном клоне репо на новой машине.Поскольку опция конфигурации окончания строки теперь находится в самом репо, начальный клон использует глобальную конфигурацию окончания строки локальной среды.Таким образом, если глобальная конфигурация конкретного пользователя выглядит следующим образом:
core.autocrlf true
Это означает, что файл с окончаниями строк в стиле Unix будет выглядеть так:
This file has<LF>
Unix style line endings.<LF>
окажется в рабочей областивот так:
This file has<CR><LF>
Unix style line endings.<CR><LF>
Похоже на ловушку 22, поскольку она не может применить настройку .gitattributes
, пока не клонирует репо.И на этом этапе уже слишком поздно.
Очевидное решение состоит в том, чтобы обеспечить всем пользователям следующее глобальное значение конфигурации:
core.autocrlf false
Но тогда это отрицает цель использования .gitattributes
вообще.
Есть ли хороший способ обойти это?