【问题标题】:How to mark code as stable using Composer?如何使用 Composer 将代码标记为稳定?
【发布时间】:2012-07-23 22:22:57
【问题描述】:

我最近遇到了 composer 的变化,这意味着默认 minimum-stabilitystable,而不是将其设置为 dev 我想将我的一些库标记为稳定。

我实际上使用了两个相关的分支,releasedevmaster 分支。每隔一段时间就会有一些东西被合并到release 并标记为新版本。

composer 如何确定我的库的稳定性,是否有分支命名约定、版本号、composer.json 中的键?

谢谢

【问题讨论】:

    标签: php git composer-php


    【解决方案1】:

    答案是:Tags。如果您不想使用标签,您也可以使用Alias。但值得一提的是,您应该只在您的软件包稳定时将其标记为稳定,而不是让其他人相信它们是稳定的。

    更新:另外一个链接:Stability

    【讨论】:

    • 我知道我在某个地方看到过。所以任何没有 RC、beta、alpha 或 patch 后缀的东西都是稳定的,即使是 0.0.x?
    • 正确。任何带有标记版本的东西,包括 0.0.x,都被认为是稳定的。
    • stablestability 不会出现在标签或别名链接的任何位置。也许他们在某个时候做到了。
    • 我要指出,通过 tags,您需要 VCS tags,就像在 git tags 中一样。我以为composer.json 文件中有一些tags 条目可以设置在某处,但我需要做的就是git tag -a x.y.zgit push --tags。然后在消费者项目上,composer require xxx/yyy 就像一个魅力。
    • 不鼓励从 SO 链接的好例子
    【解决方案2】:

    详细说明 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" 
    }
    

    【讨论】:

    • 澄清一下,对我来说,问题是我有一个包在它的 composer.json 中指定了这个“版本”字段,这导致我的私有包服务器(Toran 代理)忽略我用 git 添加的标签。
    【解决方案3】:

    回答问题:

    • 对于 VCS,它是 dev-master
    • 对于包装师,它是*@stable

    有关“稳定”或“冻结”作曲家版本的更多信息

    冻结稳定

    获取最新版本的需求有时很有用,尤其是在审核期间,这就是为什么我制作了一个 composer 包来稳定所有依赖项:Composer Stable Versions (https://github.com/MaximeCulea/Composer-Stable-Versions)。

    使用此命令,您对 composer.json 的依赖将自动更改为:

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

    进入:

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

    冻结 Composer 版本

    如果之后您打算做相反的事情来获取您测试站点的 composer.lock 的最新版本,这在使站点上线时特别有用,请查看我的另一个 composer 命令:Composer Freeze Versionshttps://github.com/MaximeCulea/Composer-Freeze-Versions)。

    使用此命令,您对 composer.json 的依赖将被自动锁定:

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

    进入:

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


    希望对你有帮助。

    【讨论】:

    • 只是为了澄清 dev-master 是 composer (composer git...) 的默认 master 分支的别名,因为任何带有 dev- 前缀的版本规范都定义了必须克隆存储库带有 git 历史记录,而当指定标记时,将检索文件但没有 git 信息 - getcomposer.org/doc/articles/versions.md#branches 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)
    【解决方案4】:

    如果您不是从 github 或类似的存储库获取包,而是从本地路径获取包,“路径”类型,则必须在“composer.json”文件中明确定义版本,它不会从本地 git 标签中找出来。此外,只有当它在 packagegist、github 上不存在时才会安装这样的包,因此如果它存在于本地路径 composer.json "name" 字段中,可能需要临时重命名为其他内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-03
      • 1970-01-01
      • 2016-01-14
      • 1970-01-01
      • 2021-09-24
      • 2015-04-03
      • 2019-12-27
      相关资源
      最近更新 更多