Как пометить код как стабильный с помощью Composer?

Недавно я столкнулся с изменением в композиторе, означающим, что по умолчанию minimum-stability равно stable, и вместо того, чтобы устанавливать это значение в dev, я хотел бы отметить некоторые из моих библиотек как стабильные.

На самом деле я использую две соответствующие ветки, release и dev, ответвляющиеся от master. Время от времени что-то объединяется в release и помечается как новая версия.

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

Спасибо


person Adam    schedule 25.07.2012    source источник


Ответы (4)


Ответ: Теги. Вы также можете использовать Псевдоним, если не хотите использовать теги. Но стоит отметить, что вы должны отмечать свои пакеты как стабильные только тогда, когда они стабильны, а не заставлять других поверить, что они стабильны.

Обновление: еще одна ссылка: Стабильность

person KingCrunch    schedule 25.07.2012
comment
Я знал, что где-то это видел. Итак, все без суффикса для RC, beta, alpha или patch стабильно, даже 0.0.x? - person Adam; 25.07.2012
comment
Верный. Все, что имеет помеченный выпуск, включая 0.0.x, считается стабильным. - person igorw; 25.07.2012
comment
Слова stable или stability нигде не появляются в ссылках тегов или псевдонимов. Может быть, когда-то и сделали. - person Ben Creasy; 04.03.2016
comment
Я хотел бы отметить, что для тегов вам нужны теги VCS, как и в тегах git. Я думал, что в файле composer.json есть какая-то запись tags, которую нужно где-то настроить, но все, что мне нужно было сделать, это git tag -a x.y.z и git push --tags. Затем в потребительском проекте composer require xxx/yyy работал как шарм. - person Benoit Duffez; 13.11.2018
comment
отличный пример того, почему ссылка с SO не рекомендуется - person lewis; 07.05.2020
comment
Поскольку есть ссылка на ссылку, которая больше не работает, я пытаюсь конкретизировать, что на самом деле не требуется ничего большего, чем создание тега~=release в интерфейсе github, подключение к учетной записи упаковщика или установка хука github для изменений. должны быть отражены в течение минуты. Хотя некоторые кешированные библиотеки могут потребоваться для удаления от поставщика или могут быть закэшированы в composer.lock, поэтому обновите их с помощью команды удаления или удалите вручную некоторые из нестабильных загрузок, а также каталог .git, который иногда трудно удалить. Мысль подтверждается командой удаления сразу после. - person FantomX1; 15.07.2020
comment
Путь типа репозитория должен иметь версию, определенную в файле композитора, чтобы иметь доступную версию, он каким-то образом не определяет ее только из локальных тегов git. И библиотека не должна существовать на пакете. - person FantomX1; 15.07.2020

Разрабатывая ответ KingCrunch, так как это было не сразу очевидно для меня.

Из https://getcomposer.org/doc/02-libraries.md#specifying-the-version

Когда вы публикуете свой пакет на Packagist, он может вывести версию из информации VCS (git, svn, hg). Это означает, что вам не нужно явно объявлять это.

С Github это очень просто: https://help.github.com/articles/working-with-tags/

Более того:

Если вы создаете пакеты вручную и действительно должны указать это явно, вы можете просто добавить поле версии:

{
    "version": "1.0.0" 
}
person iautomation    schedule 17.02.2016
comment
Просто чтобы уточнить, для меня проблема заключалась в том, что у меня был пакет, в котором это поле версии было указано в его composer.json, из-за чего мой частный сервер пакетов (Toran Proxy) игнорировал теги, которые я добавил с помощью git. - person Maarten00; 14.06.2017

Чтобы ответить на вопрос:

  • для VCS это dev-master
  • для упаковщика это *@stable

Для получения дополнительной информации о стабилизации или замораживании версий композитора

Заморозить Сделать стабильным

Иногда полезно, особенно во время аудита, получить последние версии ваших требований, поэтому я сделал пакет композитора, который делает все ваши зависимости стабильными: Стабильные версии Composer (https://github.com/MaximeCulea/Composer-Stable-Versions).

Используя эту команду, ваши зависимости в composer.json будут автоматически изменены с:

"wpackagist-plugin/wordpress-seo":"6.2"

в:

"wpackagist-plugin/wordpress-seo":"*@stable"

Заморозить версии Composer

Если впоследствии вы планируете сделать обратное, чтобы получить последние версии вашего composer.lock, с которым вы тестировали свой сайт, особенно полезно при создании сайта, посмотрите на другую мою команду композитора: Версии Composer Freeze (https://github.com/MaximeCulea/Composer-Freeze-Versions).

Используя эту команду, ваши зависимости в composer.json будут автоматически заблокированы:

"wpackagist-plugin/wordpress-seo":"@stable"

в:

"wpackagist-plugin/wordpress-seo":"6.2"


Надеюсь, поможет.

person Maxime Culea    schedule 18.05.2018
comment
Просто поясню, что dev-master — это псевдоним основной ветки по умолчанию в composer (composer git...), так как любая спецификация версии с префиксом dev- определяет, что репозиторий должен быть клонирован с историей git, тогда как когда указан, файлы извлекаются, но без информации о git - getcomposer.org/doc/ статьи/версии.md#ветки If you want Composer to check out a branch instead of a tag, you need to point it to the branch using the special dev-* prefix (or sometimes suffix; see below) - person FantomX1; 11.06.2020

Если вы получаете свой пакет не из github или подобного репозитория, а, например, из локального пути, типа пути, вам необходимо явно указать версию в файле 'composer.json', это не будет отображаться. это из локальных тегов git. Кроме того, такой пакет будет установлен только в том случае, если он не существует в пакете, github, и поэтому его может потребоваться временно переименовать, если он существует в поле имени локального пути composer.json, во что-то другое.

person FantomX1    schedule 15.07.2020