2015-10-15 5 views
1

У меня есть репозиторий на Bitbucket, который представляет собой пакет Composer с поддержкой (содержащий composer.json, который выглядит следующим образом):Как указать стабильность пакета Composer?

{ 
    "name": "foo/package", 
    "version": "0.0.1" 
} 

У меня есть еще один проект, который имеет этот composer.json:

{ 
    "name": "foo/project", 
    "repositories": [ 
     { 
      "type": "vcs", 
      "url": "[bitbucket git url]", 
     } 
    ], 
    "require": { 
     "foo/package": "*" 
    } 
} 

Если я пытаюсь запустить composer install, я получаю сообщение об ошибке:

Your requirements could not be resolved to an installable set of packages. 

    Problem 1 
    - Installation request for foo/package * -> satisfiable by foo/package[dev-master]. 
    - Removal request for foo/package == 9999999-dev 

Если добавить следующую строку в ком проекта poser.json, ошибка исчезает, и пакет устанавливается правильно.

"minimum-stability": "dev" 

Я понимаю, что композитор не считает foo/package быть стабильным, поэтому он говорит, что не может найти его и добавить строку «минимальной стабильности» говорит, что это foo/package нормально установить. Но я не знаю, как сказать Composer, что foo/packageis stable.

Установка необходимой версии для 0.0.1 вместо * не работает, либо, он просто дает мне эту ошибку вместо того, чтобы:

Problem 1 
- The requested package stashimi/crawler 0.0.1 could not be found. 

Я нашел другой переполнения стека вопрос, который подразумевает, что дает Foo/пакет номер версии будет указывают, что он стабилен, но это явно не работает, учитывая файлы выше. Что я делаю не так?

ответ

3

Хорошо, я понял свою проблему. В принципе, при использовании репозитория VCS он ищет тег с данной версией требований. В моем случае, поскольку в моем репо не было тега 0.0.1, Composer не смог его найти. Создание этого тега в репо решило проблему.

Другой (возможно, более правильный) способ решить эту задачу - сделать требуемую версию dev-master, что в основном означает «использовать ветку master в репозитории». (Или какая-либо отрасль; документация Composer о спецификации версии dev-X немного запутанна.)

1

Единственный способ создать стабильную версию - пометить ее. Очень полезно использовать semantic versioning, что означает, что действительно стабильная версия начинается с версии 1.0.0. Все нулевые версии считаются экспериментальными и нестабильными в семантическом управлении версиями, но Composer считает эти теги стабильными. Однако существует разница между оператором тильды (который не обрабатывает нулевые версии разным) и оператором каретки (что делает).

Избегайте полагаться на ветки! В конечном итоге он сломает ваше программное обеспечение, потому что ветвь не указывает на одно конкретное состояние пакета программного обеспечения, а на незавершенное производство, которое со временем изменится. Это боль, с которой можно работать, что делает невозможным обновление чего-либо в конце. Не пойди так!

И, кстати, использование ветвей - это стабильность «dev», которая не будет работать, если у вас есть программное обеспечение, требующее пакет, для которого требуется ветка - вам придется разрешить стабильность вашего основного программного обеспечения, которое либо " минимальная стабильность: dev "для ВСЕХ пакетов, которые вы используете (даже если вы можете« предпочитаете-стабильный: истина »), или вы вручную узнаете, какой dev-stable пакет используется, и включите это явно.

Это просто слишком много хлопот, чтобы это сделать. Отметьте свое программное обеспечение, и все будет хорошо, даже если оно не является семантическим.

Смежные вопросы