Разделители строк при использовании composer / GIT

Я создал пример проекта laravel, используя 2 разные команды (в Windows 8):

composer create-project laravel/laravel l5linefeed dev-develop --prefer-dist

а также

composer create-project laravel/laravel l5linefeed2 dev-develop

Речь идет о разделителях строк: в первом случае файлы имеют окончания строк в Unix (LF), а во втором случае файлы имеют окончания строк в Windows (CRLF).

Вопросы:

  1. Это почему? Это имеет что-то общее с GIT? Я хотел бы иметь в файлах оригинальные разделители (такие же, как в packagist), а не модифицированные

  2. Если это имеет что-то общее с Fit, когда я запускаю команду GIT в cmd, я получаю:

    git config --global -l
    
    user.name=xxx
    user.email=xxx@xxx
    core.autocrlf=false
    

    таким образом, CLRF не установлен в true, так почему окончания строк являются CRLF?

0

Решение

Я могу подтвердить, что это связано с GIT.

Вы можете установить git config --global core.autocrlf input конвертировать все CRLF в LF при совершении.

Это означает, что Git обработает все текстовые файлы и убедится, что CRLF заменяется на LF при записи этого файла в объектную базу данных. Это не будет, однако, делать обратное. Когда вы читаете файлы обратно из базы данных объектов и записываете их в рабочий каталог, они все равно будут иметь LF для обозначения конца строки. Этот параметр обычно используется в Unix / Linux / OS X для предотвращения записи CRLF в хранилище. Идея заключалась в том, что если вы вставили код из веб-браузера и случайно поместили CRLF в один из ваших файлов, Git удостоверится, что они будут заменены на LF при записи в базу данных объектов.

Существует также настройка для каждого репозитория, где вы можете объявить окончания строк для определенных файлов. Поэтому .gitattributes файл должен быть создан в вашем репо. Для некоторых примеров см. https://help.github.com/articles/dealing-with-line-endings/#per-repository-settings. Преимущество настройки для каждого репозитория состоит в том, что у каждого пользователя, который извлекает из вашего репозитория, одинаковые настройки окончания строки.

Поскольку любой хороший редактор окон должен поддерживать как CRLF, так и LF, я не вижу проблем с использованием только LF.

Разница между dist и source

Бежать composer show laravel/laravel и вы можете увидеть

source   : [git] https://github.com/laravel/laravel.git 4afcd8c278febbe6840dbf8bbb46514818abce59
dist     : [zip] https://api.github.com/repos/laravel/laravel/zipball/4afcd8c278febbe6840dbf8bbb46514818abce59 4afcd8c278febbe6840dbf8bbb46514818abce59

Опция композитора --prefer-dist не zip-архив с контролем версий. В основном это более быстрый способ, чем source и по умолчанию для стабильных версий.

Если --prefer-source Композитор будет клонировать из репозитория git. Потому что вы не на стабильной версии source используется, если вы пропустите --prefer-dist,

Почему dist это LF

Zip-архив загружен и распакован. Никакие действия мерзавца не выполняются, перевод строки получен как предоставлено в репо / почтовом индексе.

Почему источником является CRLF

Репозиторий git клонирован и извлечен из github.
Хранилище Laravel имеет .gitattributes файл, содержащий

* text=auto
  • Замечания: .gitattributes имеет более высокий приоритет, чем git config

* text=auto заставит Git обрабатывать файлы любым способом, который он считает лучшим. Теперь вы работаете в Windows, и Git считает, что лучше всего поменять его на CRLF, так как я думаю, что это значение по умолчанию для Windows.

1

Другие решения

Других решений пока нет …