Я создал образец проекта laravel, используя две разные команды (в Windows 8):
composer create-project laravel/laravel l5linefeed dev-develop --prefer-dist
а также
composer create-project laravel/laravel l5linefeed2 dev-develop
Речь идет о разделителях строк - в файлах 1-го случая есть окончания строк Unix (LF), но во втором случае файлы имеют окончания строки Windows (CRLF).
Вопросов:
Почему это? У него есть что-то общее с GIT? Я хотел бы иметь в файлах оригинальные разделители (то же самое, что и в packagist) и не изменять
Если у него есть что-то общее с Fit, когда я запускаю команду GIT в cmd, я получаю:
git config --global -l
user.name=xxx
user.email=xxx@xxx
core.autocrlf=false
поэтому CLRF не установлен в true, поэтому почему окончанием строки является CRLF?
Я могу подтвердить, что это связано с 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.
Выполнить 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
.
Zip-архив загружается и извлекается. Выполнение git-операций не выполняется, если линия-канал получен в соответствии с условиями repo/zip.
Репозиторий git клонируется и выгружается из github. В репозитории laravel есть файл .gitattributes
содержащий
* text=auto
.gitattributes
имеет более высокий приоритет, чем git config * text=auto
сделает Git обрабатывать файлы любым способом, который, по его мнению, является лучшим. Теперь вы находитесь в Windows, и Git считает, что лучше всего изменить его на CRLF, поскольку это по умолчанию для Windows, я думаю.
core.autocrlf=false
? Разве они не должны быть такими же, как в хранилище? А для редактирования файлов позже я использую PhpStorm