Для больших проектов, настройка версии пакета в Composer, не простая задача. Во-первых, есть много разных способов указания версии пакета. И конечно, вы должны проверить, что версия указанного пакета действительно работает при установке или обновлении проекта, специально под минимальные версии настроенного.
В целях повышения удобства тестирования компонентов на соответствие минимальным требованиям версии Symfony, Composer теперь включает в себя две новые опции:
--prefer-lowest
: устанавливает минимально возможную версию для всех зависимостей.--prefer-stable
: устанавливает предпочтение стабильным версиям зависимостей, это означает, что, в сочетании с предыдущей опцией, если используется версия ~ 2.4 то будет выбрана 2.4.0-stable а не допустим 2.4.0-alpha1.
Благодаря этим двум новым опциям, теперь очень легко проверить, действительно ли ваш проект работает на минимальных версиях пакетов указанных в нем:
$ composer update --prefer-lowest --prefer-stable
В проекте Symfony, при проверке что минимальные версии верны, важно обеспечить обратную совместимость для Symfony 2.3 (которая, является версией с долгосрочной поддержкой, и при этом очень часто используется для создания новых проектов Symfony) и обеспечить совместимость с Symfony 3 (которая будет использовать некоторые компоненты 2.x).
Вот почему в течение последних недель мы упорно трудились над проверкой и исправлением всех требований для версий пакетов всех компонентов и всех ветвей Symfony. Вы можете посмотреть изменения, внесенные в ветку 2.3, в ветку 2.5 и в ветку 2.6 (которые также применимы к 2.7 и мастер ветке).
Конечно, проверку версии пакета для частных проектов и приложений, наверное, делать не стоит, но если вы ведете какой-либо проект с открытым исходным кодом, то мы рекомендуем проверить и исправить свои версии пакетов. Вам, возможно, придется прибегнуть к методу проб и ошибок чтобы сделать это, так как этот процесс не может быть легко автоматизирован:
- Установите ваш проект с опцией—prefer-lowest и проверьте, возникает ли какая-либо ошибка.
- Запустите ваши тесты и проверьте ваш проект на наличие каких-либо ошибок или неудач.
- Если нет ошибок, все правильно. Вы можете попробовать снизить версии пакетов, если вы хотите указать настолько минимальные версии зависимостей, насколько это возможно.
- Если есть какие-либо ошибки, алгоритм следующий:
- Прочитайте сообщение об ошибке, чтобы найти элемент, в котором возникла ошибка (класс, функцию метод и т.д.)
- Найдите в репозитарии пакета этого элемента.
- Выполнить команду git blame, чтобы найти тот коммит, в котором добавлен, изменен или удален этот элемент.
- Посмотрите на минимальный тег версии, который содержит коммит. Это минимальная версия, требуемая для пакета!
- Наконец, убедитесь, в соблюдение корректности всех внесенных изменений, используя свой сервер непрерывной интеграции. Попробуйте поискать вдохновение в файле .travis.yml Symfony.
Источник: http://symfony.com/blog/testing-minimal-versions-of-symfony-requirements