2015-10-02 5 views
1

Иногда мы используем SourceTree как клиент. Он обрабатывает различные окончания строк в порядке, но инструмент diff, который он использует, не работает. Он видит все строки, заканчивающиеся в LF, как одну строку.правильная настройка автокрест для git

В результате мы сохраняем все источники в нашем репозитории с помощью CRLF.

Я ищу установку git-клиента. Я не могу найти правильную настройку для ТЕКСТА или АВТОКЛФ. Кажется, что они все хотят «нормализовать» файл при регистрации в LF.

Я хочу: Преобразование в CRLF при оформлении заказа; и либо Преобразование в CRLF на checkin; или Не делайте ничего, чтобы проверить;

Лучшее, что я могу найти, это -text: ничего не делайте при регистрации или оформлении заказа;

Есть ли надежда?

Thanks, Brad.

ответ

1

Внутренние настройки конца строки Git - это LF, и я не знаю ни одного способа изменить это поведение, кроме как перекомпилировать его из источника. Однако вы можете заставить проверки использовать CRLF, для чего требуется создание файла .gitattributes. Например:

# Force C# source files to be checked out using CRLF line endings, 
# ignoring "core.eol" setting. 
*.cs eol=crlf 

# Don't apply CRLF conversion to PDF files, regardless of 
# user settings including "core.autocrlf". 
*.pdf -text 

# All other files are subjected to the usual algorithm to determine 
# whether a file is a binary file or a text file, respecting 
# "core.eol" for all files detected as text files. 
# "core.autocrlf", if set, will force the conversion to/from CRLF 
# automatically as necessary for text files. 
* text=auto 

Обратите внимание, что если вы создали новый файл с НЧ окончаний линии (например, с использованием Linux, Cygwin, или приложения, такие как Notepad ++, который по умолчанию LF окончаний строк), вы получите предупреждение при добавлении этот файл в хранилище, если он соответствует шаблону в файле .gitattributes где eol=crlf используется:

warning: LF will be replaced by CRLF in Example.cs. 
The file will have its original line endings in your working directory. 

конечно, если вы позже тянуть новые изменения, оригинальные LF линии окончания больше не будет присутствовать.

Вот список взаимодействий между различными настройками EOL/текст:

  1. .gitattributes файл
    • eol=...
      • Возможные значения lf и crlf.
      • Указанные файлы всегда обрабатываются как текстовые файлы и выгружаются с указанными окончаниями строк.
      • Игнорирует core.eol и core.autocrlf.
    • text
      • Файлы указаны всегда рассматриваются как текстовые файлы.
      • Реквизиты core.eol и core.autocrlf.
    • text=auto
      • Файлы указано подвергаются автоматическому обнаружению, чтобы определить, являются ли они текст или двоичные файлы.
      • Respects core.eol и core.autocrlf для текстовых файлов.
      • Игнорирует core.eol и core.autocrlf для двоичных файлов.
    • -text
      • Файлы указаны всегда рассматриваются как двоичные файлы.
      • Игнорирует core.eol и core.autocrlf, так как они не применяются к двоичным файлам.
  2. core.autocrlf установка
    • input конфигурация: любой текст файлы проверяются претерпит преобразование из CRLF в родной LF.
    • true: любые текстовые файлы, проверенные в/из которых проходят преобразование CRLF.
    • Может быть переопределено правилом eol=..., применяемым к определенным файлам в .gitattributes.
  3. core.eol настройка конфигурация
    • native (по умолчанию): любые текстовые файлы Выданы имеют родные окончания линии (CRLF на Windows, Л.Ф. в другом месте)
    • lf: любые текстовые файлы Выданы имеют НЧ окончаний строк
    • crlf: любой текст файлы Выданы имеет CRLF окончаний строк
    • Если core.autocrlf установлен в true, этот Настрой g игнорируется.
    • Может быть переопределено правилом eol=..., применяемым к определенным файлам в .gitattributes.
Смежные вопросы