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

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

Мне нужно установить пару новых пакетов поставщиков с помощью composer.

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

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

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

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


person Nicholas Robertson    schedule 17.09.2014    source источник


Ответы (4)


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

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

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

https://github.com/composer/satis

Итак, мое предложение было бы таким:

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

-

person Cyprian    schedule 17.09.2014

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

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

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

person Jovan Perovic    schedule 17.09.2014

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

person Tomasz Madeyski    schedule 17.09.2014

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

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

person lsouza    schedule 17.09.2014