如何更改 packagist 的标签以获得稳定版本?
Posted
技术标签:
【中文标题】如何更改 packagist 的标签以获得稳定版本?【英文标题】:How do I change the packagist sticker for stable release? 【发布时间】:2013-11-19 06:41:53 【问题描述】:这是我写的开源代码。
https://github.com/simkimsia/UtilityBehaviors/blob/master/README.mdown
我有一个来自packagist.org
的No Stable Release
如何获得来自packagist
的稳定版贴纸?
【问题讨论】:
【参考方案1】:您必须使用版本号标记您的代码。
git tag -a 0.0.0
这将宣布第一个稳定版本。如果您担心版本号全为零,可以根据需要从 0.0.1 之类的内容开始。如果可以的话,尽量坚持语义版本控制:http://semver.org。之后,您应该将其推送到公共存储库,例如 git push --tags
。
请注意,您可以在标签中使用整个稳定性标签数组。 Composer 认可了从 alpha、beta 到发布候选的所有内容。有关如何创建版本号的信息,请参阅 http://getcomposer.org/doc/04-schema.md#version。
Packagist 然后将扫描您的存储库并处理该标记,这是一个“稳定”版本,并相应地标记您的包(即使使用 0.0.0 版本号 - 0.x 软件与 24.x 软件在Composer/Packagist 的术语)。
编辑 2016-07-14
请注意,如果语义版本控制中的版本号以0.x.y
开头,则它们的处理方式会有所不同。这不会以任何方式影响标记和发布,但会影响用户选择和更新您发布的软件的方式。如果您发布下一个次要更新0.x+1
,0.x
范围内的任何软件都将被视为不兼容。 Composer 波浪号运算符~
不会被此干扰:~0.x
(任何整数为 x)将更新到下一个次要版本。插入符运算符的行为会有所不同:^0.x
或 ^0.x.y
将保持在 0.x
范围内,不会转到任何 0.x+1.y
版本。
解决此问题的最佳方法是从1.x
版本开始,并使用稳定性标志来指示可能的更改。您可以使用1.0.0-alpha1
作为您的第一个版本而不是0.0.1
,以后的版本可能是1.0.0-alpha2
用于另一个“不稳定”(阅读:API 未完成/稳定)版本,然后转到1.0.0-beta1
以获取API-stable,但内部未完成的版本,然后 1.0.0-rc1
可能是 API 稳定的,在最后的错误修复阶段完成的版本,然后是 1.0.0
的最终版本。更多错误修正将是1.0.1
及以上,新功能将是1.1.0
,不兼容的API 更改将是2.0.0
。请注意,第一批用户可能会使用^1.0.0@beta
作为他们的版本要求,并且随着开发的进行,将始终获得最新更新而无需更改他们的要求(除非您破坏了 API 并以这种方式强制更新)。如果你走0.x
路线然后以1.0.0
发布最终产品,这将永远不会奏效,因为你至少有明显的不兼容更新跳转到 1.0。
如果没有未来的知识,很难决定一个包是否被证明是有用的并创造了一个快乐的用户群(他们将从1.0.0@alpha
发布标签中受益),或者它是否只是一个没有人在生产中使用的有趣实验(又名0.x
)。
我个人对内部私有包的偏好是从一开始就将它们设为1.0
。我必须处理从0.0.1
开始的几个包,并且在更新时有点讨厌,因为它们已经成熟,但由于版本不兼容的步骤而无法转到1.0
,这将涉及到二级包的大量工作。
【讨论】:
我注意到我在git push --tags
中添加的编辑不再存在。我认为这是答案的重要部分。可以加进去吗?
该编辑的五个审阅者中有四个拒绝了它。我认为标签必须在Packagist.org扫描的存储库中是很自然的,所以你必须推送它。
我接受他们的决定。老实说,作为标签概念的初学者,我不得不谷歌找出确切的推送命令是什么。我想我会省去其他初学者搜索的麻烦。
您提出了一个有效的观点。我在我的答案中添加了这个提示,尽管它现在已经在 cmets 中提到了。 :)
people:packagist 缓存东西。使用标签时,请记住保持冷静,并在更新 packagist 后等待几分钟,然后再次运行 composer update
。以上是关于如何更改 packagist 的标签以获得稳定版本?的主要内容,如果未能解决你的问题,请参考以下文章
sh StriderCD配置。为最新版本构建所有软件包以获得稳定和仅赢
如何在 github 和 packagist 上创建包的版本?特定于 PHP