【问题标题】:Correcting PHP version requirement in tagged release更正标记版本中的 PHP 版本要求
【发布时间】:2017-03-09 09:06:39
【问题描述】:

我正在使用 Composer,最近犯了一个错误,我不知道如何解决。

我的包的 2.1.0 版本不再支持 PHP 5.3 和 PHP 5.4。但是我忘记更改composer.json 中的版本要求,它留在>=5.3。这个版本在几周前被标记了。从那时起,composer.json 中的疏忽已得到修复,现在它在 2.2.0 及更高版本中正确声明了 >=5.5

这里的问题是,拥有 PHP 5.3 或 PHP 5.4 并安装版本 ~2.0 的人现在将获得 2.1.0,因为它是最新的(假定的)匹配版本,之后他们的安装就会中断。

如何以符合SemVer 的方式解决此问题?

【问题讨论】:

  • 我猜运行 php 5.3 和 5.4 的服务器会被你的包的非功能版本卡住。从来没有听说过在 composer/packagist 上取消发布版本的方法,所以我想你唯一的选择是回滚到适用于 php 5.3 的文件,将其发布为新版本,比如 2.3,让它爬网,然后发布 >=5.5 版本的文件,如 2.4。凌乱..我希望有人有更好的主意。

标签: php composer-php semantic-versioning


【解决方案1】:

the FAQ 的这一部分似乎在这里最相关:

如果我不小心将向后不兼容的更改作为次要版本发布了怎么办?

一旦您意识到自己违反了语义版本控制规范,请修复问题并发布新的次要版本,以纠正问题并恢复向后兼容性。即使在这种情况下,修改版本化版本也是不可接受的。如果合适,请记录有问题的版本并将问题告知您的用户,以便他们了解有问题的版本。

你已经发布了更新版本,很好。

您绝对应该删除已经发布的版本,而只是尽力宣传版本2.1.0和PHP

【讨论】:

  • 这在实践中是行不通的。大多数使用这个库的人甚至都不知道他们正在使用它,更不用说在调用 Composer 之前查看自述文件了。
  • 问题是,如果你删除一个标记的版本,你可能会在某个地方破坏某人的构建——packagist 会告诉你你的包是否依赖,所以如果它根本不依赖,那么你可以安全地恢复
【解决方案2】:

我会从 github 存储库和 packagist 中删除标签。

删除不等于修改。您没有移动会导致重复性不一致的标签。

删除标签只会使任何新/未来用户无法使用它。现在运行它的人,要么安装有问题,要么可以安全地更新到新版本。

【讨论】:

    猜你喜欢
    • 2015-09-02
    • 2014-12-04
    • 2022-08-10
    • 2020-11-17
    • 2021-11-28
    • 2014-09-12
    • 1970-01-01
    • 2020-06-07
    • 2013-04-05
    相关资源
    最近更新 更多