Как настроить все файлы в подкаталоге на использование определенного eol с помощью gitattributes?

Я пытался настроить определенные файлы так, чтобы они всегда использовали lf, а не crlf, независимо от autocrlf в локальной системе.

Я попытался создать .gitattributes в корне проекта, который содержал только SquishIt.Tests/js/*.js eol=lf, а также попробовал SquishIt.Tests/js/ eol=lf. Я отправил обе эти попытки на свой пульт, а затем дважды попытался клонировать его локально. Файлы в /js/ всегда отображались с CR + LF в обоих случаях, так как autocrlf для меня включен глобально.

Я на машине с Windows, на всякий случай непонятно. Возможно ли то, чего я пытаюсь достичь?


person Akkuma    schedule 12.07.2011    source источник


Ответы (2)


Я хотел, чтобы все текстовые файлы были вынуждены использовать LF, кроме одного подкаталога (.idea), который вынужден использовать «CRLF». Вот как выглядит мой .gitattributes:

* text eol=lf
/.idea/* text eol=crlf

Итак, я предполагаю, что ваш должен выглядеть так:

* text=auto
/SquishIt.Tests/js/* text eol=lf
person Ben    schedule 03.09.2014
comment
Я пришел сюда именно за этой .идеей - я был бы признателен, если бы вы добавили ссылку на некоторые документы :) В частности, почему ведущий / ? Также как можно включать файлы в подпапки типа .idea/dictionaries - person Mr_and_Mrs_D; 24.03.2017
comment
На ваш второй вопрос вы можете просто использовать /.idea/dictionaries/* для сопоставления файлов в этом подкаталоге. - person Tarnschaf; 12.04.2017
comment
Если вы хотите включить файлы в папку и ВСЕ подпапки, используйте /.idea/**. Если вы хотите включить файлы в ЛЮБУЮ подпапку с именем .idea независимо от глубины, используйте .idea/*. - person SensorSmith; 20.01.2018

Я бы установил для autocrlf значение false и установил для core.whitespace значение cr-at-eol. Лучше пусть ваши редакторы разберутся с разницей в окончаниях строк. Пусть git хранит их как есть.

Надеюсь это поможет.

person Adam Dymitruk    schedule 12.07.2011
comment
Существуют модульные тесты, которые считывают содержимое файлов, и файлы должны поддерживать свои нормализованные окончания строк на всех платформах независимо от настроек autocrlf, чтобы обеспечить правильное прохождение тестов. Я не могу контролировать, есть ли у участников эти настройки. - person Akkuma; 13.07.2011
comment
Сделайте тесты более устойчивыми. Я бы не хотел, чтобы что-то вроде vcs мешало тому, что содержится в файле. - person Adam Dymitruk; 13.07.2011
comment
Спасибо, я нашел способ сделать тесты более устойчивыми, не беспокоясь больше о vcs. Для тех, кто заинтересован, я в основном читаю файл, нормализую окончания строк и переписываю файл, чтобы гарантировать, что он имеет правильные окончания строк. - person Akkuma; 13.07.2011
comment
Пожалуйста, не принимайте этот ответ в качестве ответа, так как он не отвечает на ваш вопрос. Есть некоторые ситуации, в которых вам абсолютно необходимо контролировать окончания строк в подкаталоге. Например, у меня есть марионеточный проект, содержащийся в моем приложении, который должен иметь окончания строки LF для всех его файлов, иначе он сломается. - person Paul Gibler; 24.08.2014
comment
Еще один допустимый вариант использования: у меня есть папка моего репозитория в моей ОС Windows, которая используется совместно с виртуальной машиной Linux. В эту папку включены сценарии оболочки для запуска гостевой системы Linux. Мне нужно, чтобы git проверил с Linux EOL вместо Windows EOL по умолчанию. - person thelr; 04.03.2015
comment
И тогда разработчики с разными редакторами или разными ОС будут коммитить в разных форматах, в результате чего различия будут нечитаемыми... - person fons; 08.06.2017