git: всегда принудительно использовать окончания строк Windows для репо

Я хочу, чтобы в моем репо всегда использовались окончания строк Windows, независимо от среды пользователя или настройки core.autocrlf. Я читал об использовании .gitattributes для установки концов строк, но не смог это сделать. Мой файл .gitattributes выглядит так:

* text=auto
* text eol=crlf

После добавления этого файла я запускаю git add --renormalize . и git add .gitattributes, затем нажимаю на удаленный. Однако это не переопределяет мою глобальную настройку core.autocrlf. То, что я хочу, - это подтолкнуть окончания строк Windows к Bitbucket, но я получаю окончания строк Linux в Bitbucket.

Как я могу заставить мой клиент git использовать окончания строк Windows для определенного репо, независимо от настройки пользователя для core.autocrlf?


person ewok    schedule 01.04.2020    source источник


Ответы (1)


Во-первых, у вас есть две конфликтующие настройки. * text=auto и * text eol=crlf несовместимы. Вам нужно выбрать один.

Однако я сожалею, что ни один из них не будет делать то, что вы хотите. У Git нет опции «всегда преобразовывать в CR/LF в репозитории». Ваши единственные параметры определяют, что входит в рабочий каталог.

Например, * text eol=crlf поместит окончания строк в стиле Windows в рабочий каталог, но поместит строку в стиле Unix в репозиторий.

Вы можете полностью отключить конфигурацию конца строки, используя * -text, но это просто прекратит преобразование текста и зарегистрирует файл буквально в том виде, в котором он существует на диске. Это не исключает возможности того, что пользователь Unix перепишет файл с окончаниями строк в стиле Unix.

Я бы посоветовал вам игнорировать содержимое файла, существующего в репозитории, и вместо этого сосредоточиться на том, что вам нужно в рабочих каталогах. Если вы всегда хотите CR/LF на диске, используйте * text eol=crlf.

person Edward Thomson    schedule 01.04.2020