Лучшая стратегия для обновления скелета проекта Symfony

1

У меня есть настроенный Symfony-проект и пользовательский поставщик. В composer.json проекта тип имеет значение "project". Для обновления моего поставщика я использую composer update. Все идет нормально.

Но как мне обновить сам проект? Он установлен композитором create-project, но я знаю, что для композитора не существует такого update-project. Какова наилучшая стратегия для поддержания моего "скелета" в актуальном состоянии? Использование git потребует init git репозитория и проверки правильной ветки/тега. Так что это не мое любимое решение для конечных пользователей и управление релизами. Какие другие методологии можно использовать для решения этого сценария?

  • 0
    Что вы подразумеваете под скелет?
  • 0
    Я имею в виду сам проект ... Следующая структура папок: - [приложение] - [bin] - [vendor] - [web] - composer.json - и т. Д. ... с обновлением composer я могу обновлять только пакеты в папке vendor а как насчет отдыха? папка app (которая содержит конфигурационные файлы и т. д.). со скелетом я имею в виду все остальные вещи за пределами папки продавца
Показать ещё 6 комментариев
Теги:
composer-php

2 ответа

1

Нет лучшей альтернативы, так как скелет полностью свободен. Вы можете использовать Symfony, просто добавив зависимость symfony/symfony и создав собственную структуру каталогов.

Это означает, что, хотя большинство проектов начинаются с скелета, проекты могут настраивать его в соответствии с их потребностями. Кроме того, некоторые пакеты, включенные скелетом, могут быть удалены из проекта или проект использует разные настройки, чем скелет.

Каждый раз, когда выпущена новая версия скелета, вы можете проверить diff (например, https://github.com/symfony/symfony-standard/compare/v2.7.2...v2.7.3) и проверить изменения и применить изменения на ваш проект, когда они необходимы в вашем проекте.

  • 0
    Хорошо, большое спасибо. Это ответ на мой вопрос ... Так что я должен найти другой путь.
0

На данный момент я тестирую другой подход. Я создал bash-скрипт, который входит в состав composer.json в части после установки и после обновления. Я знаю, что это должно существовать, но с этим, конечный пользователь должен сделать только composer update

composer.json

[...]
    "scripts": {
    "post-install-cmd": [
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::removeSymfonyStandardFiles",
      "chmod +x init_update_app && ./init_update_app"
    ],
    "post-update-cmd": [
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::removeSymfonyStandardFiles",
      "chmod +x update_app && ./update_app"
    ]
  },
[...]

После установки:

#!/bin/bash

if ! git ls-remote origin > /dev/null; then
    git init
    git remote add origin https://github.com/xxx/xxx.git
fi
git fetch --tags
latestTag=$(git describe --tags 'git rev-list --tags --max-count=1')
git checkout $latestTag

Post-Update:

#!/bin/bash

git fetch --tags
latestTag=$(git describe --tags 'git rev-list --tags --max-count=1')
git checkout $latestTag

Какие-либо недостатки такого подхода? Я знаю, что git необходимо установить, но это не проблема. Сценарии можно было бы улучшить, проверив существующий тег, чтобы снова не проверять один и тот же тег или проверить, установлен ли git...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню