Предложения по использованию контроля версий и композитора с symfony2

Я уже на полпути закончил проект в Symfony2.

Мне нужно установить пару новых комплектов поставщиков, используя Composer.

У меня уже есть все (кроме журналов, кеша и parameters.yml) в управлении версиями (включая папку вендора).

Проблема в том, что при использовании обновления композитора он удаляет папки .svn в папках поставщика, которые были обновлены. Так что сейчас это в принципе невозможно сделать (дает мне ошибку не рабочей копии).

Дополнительная информация: я работаю локально и фиксирую на сервере разработки, а затем однажды одобрил сервер приложений. Поэтому он должен быть идеальным (нельзя просто запустить установку php composer или обновление php composer на сервере dev / application после коммита).

Я также попытался экспортировать все, скопировать и вставить их обратно в репозиторий, но это также не сработало (страница индекса сломалась локально).

1

Решение

Что касается версий поставщиков, лучшим способом является вовсе не версия поставщиков.

Единственное, что вам нужно для версии composer.json а также composer.lock, Это может вызвать проблему с поставщиками, у которых нет стабильных версий, или с теми, для которых вам не нужна стабильная версия (например, master с определенной фиксацией).

В качестве решения вы должны создать свой собственный (частный) репозиторий поставщиков (скажем, ваш собственный упаковщик). У Composer есть инструмент для этого, который называется Satis.

https://github.com/composer/satis

Так что мое предложение будет:

  1. Создайте частный репозиторий с Satis. Вы размещаете каждый пакет, в котором вы нуждаетесь satis.json и всякий раз, когда вам нужно обновить версию поставщика или добавить новую, вы изменяете только файл suc.json и перестраиваете репозиторий.
  2. В вашем проекте composer.json Вы устанавливаете свой новый частный репозиторий как единственный репозиторий и устанавливаете опцию: packagist в false,
  3. Теперь каждый раз, когда вы бежите composer install он будет использовать только ваш личный репозиторий, так что это быстро, и вы всегда уверены, что все environemnt имеют одинаковые версии

1

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

Я был в похожей ситуации два года назад.

Трудный урок, который я усвоил, был никогда редактировать файлы внутри поставщика. Сначала я полностью отказался от использования composer и вручную клонировал все, что мне было нужно. Позже я решил раскошелиться на проекты, которые мне нужно было отредактировать, и вместо этого сослался на свои вилки.

Composer поддерживает частные репозитории GitHub — вам не нужно регистрировать его в Packagist, чтобы работать.

0

Вы не должны держать свои vendor каталог в вашем контроле версий. Вот как это делается в Symfony Standard Edition и вы должны следовать этому. Бег composer install Команда должна быть частью вашего процесса развертывания

0

Включение пакетов поставщиков в вашу кодовую базу не рекомендуется, поэтому, если вам нужно поддерживать ту же версию пакетов, которые вы используете на своем локальном компьютере, лучший способ — сохранить composer.lock в VCS и работает только композитор установить в других средах.

Кроме того, если вы хотите, чтобы развертывание prod происходило мгновенно, независимо от процесса компоновщика, вы можете запустить композитор установить на сервере dev и после его проверки вы можете сделать свой сценарий развертывания prod скопировать папку vendor из dev env.

0
По вопросам рекламы [email protected]