Catch-22 с настройками .gitattributes и начальным клоном репо - PullRequest
0 голосов
/ 31 мая 2018

Из-за некоторых проблем со сторонней библиотекой, которую я использую, у меня есть требование никогда не выполнять автоматическое преобразование концов строк для моего репозитория 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 вообще.

Есть ли хороший способ обойти это?

1 Ответ

0 голосов
/ 31 мая 2018

Возможным вариантом может быть изменение сценария в вашем репо, который должен запускаться разработчиком после клонирования репо (как указано в README того же репо)

Этот скрипт будет:

Вы можетесоедините это с перехватом предварительного получения на стороне сервера (при условии, что вы продвигаетесь на сервер хостинга частного репозитория), который отклонил бы любой пуш с неправильным eol.

...