Я уже на полпути закончил проект в Symfony2.
Мне нужно установить пару новых комплектов поставщиков, используя Composer.
У меня уже есть все (кроме журналов, кеша и parameters.yml) в управлении версиями (включая папку вендора).
Проблема в том, что при использовании обновления композитора он удаляет папки .svn в папках поставщика, которые были обновлены. Так что сейчас это в принципе невозможно сделать (дает мне ошибку не рабочей копии).
Дополнительная информация: я работаю локально и фиксирую на сервере разработки, а затем однажды одобрил сервер приложений. Поэтому он должен быть идеальным (нельзя просто запустить установку php composer или обновление php composer на сервере dev / application после коммита).
Я также попытался экспортировать все, скопировать и вставить их обратно в репозиторий, но это также не сработало (страница индекса сломалась локально).
Что касается версий поставщиков, лучшим способом является вовсе не версия поставщиков.
Единственное, что вам нужно для версии composer.json
а также composer.lock
, Это может вызвать проблему с поставщиками, у которых нет стабильных версий, или с теми, для которых вам не нужна стабильная версия (например, master с определенной фиксацией).
В качестве решения вы должны создать свой собственный (частный) репозиторий поставщиков (скажем, ваш собственный упаковщик). У Composer есть инструмент для этого, который называется Satis.
https://github.com/composer/satis
Так что мое предложение будет:
satis.json
и всякий раз, когда вам нужно обновить версию поставщика или добавить новую, вы изменяете только файл suc.json и перестраиваете репозиторий.composer.json
Вы устанавливаете свой новый частный репозиторий как единственный репозиторий и устанавливаете опцию: packagist
в false
,composer install
он будет использовать только ваш личный репозиторий, так что это быстро, и вы всегда уверены, что все environemnt имеют одинаковые версии—
Я был в похожей ситуации два года назад.
Трудный урок, который я усвоил, был никогда редактировать файлы внутри поставщика. Сначала я полностью отказался от использования composer
и вручную клонировал все, что мне было нужно. Позже я решил раскошелиться на проекты, которые мне нужно было отредактировать, и вместо этого сослался на свои вилки.
Composer поддерживает частные репозитории GitHub — вам не нужно регистрировать его в Packagist, чтобы работать.
Вы не должны держать свои vendor
каталог в вашем контроле версий. Вот как это делается в Symfony Standard Edition и вы должны следовать этому. Бег composer install
Команда должна быть частью вашего процесса развертывания
Включение пакетов поставщиков в вашу кодовую базу не рекомендуется, поэтому, если вам нужно поддерживать ту же версию пакетов, которые вы используете на своем локальном компьютере, лучший способ — сохранить composer.lock в VCS и работает только композитор установить в других средах.
Кроме того, если вы хотите, чтобы развертывание prod происходило мгновенно, независимо от процесса компоновщика, вы можете запустить композитор установить на сервере dev и после его проверки вы можете сделать свой сценарий развертывания prod скопировать папку vendor из dev env.