163

I usually start my projects with a version 1.0.0. As soon as I have some stuff together, I release it as 1.0.0 and move on with 1.1.0.

However, this leads to usable but not exactly feature complete version 1.0.0 of most stuff I write. I then add features and get to a decent version somewhere around 1.6.0. Many projects start with version 0.1.0, which will be as usable as my 1.0.0.

What would you suggest doing? Start with 1.0.0 or 0.1.0?

The last number is for bugfix releases only by the way. You can think of my 1.0.0 as 1.0 and 0.1.0 as 0.1 is that's easier for you.

4

11 回答 11

320

Semantic Versioning 2.0.0标准提供了 0.yz 空间来表示您的项目没有稳定的公共 API:

主要版本零 (0.yz) 用于初始开发。任何事情都可能随时改变。公共 API 不应该被认为是稳定的。

建议从 0.1.0 开始,并在对公共 API 的每次重大更改时增加次要版本。当您能够适当地控制和管理这些重大更改时,您可以增加到 1.0.0:

1.0.0 版定义了公共 API。此版本后版本号的递增方式取决于此公共 API 及其更改方式。

使用 0.yz 空间的好处是在初始开发期间您不会达到较高的主要版本,例如 142.6.0。避免高主要版本号往往是行业惯例,部分原因是出于营销原因,但这可能与您无关。

语义版本控制特别适用于具有公共 API 的项目,但通常用于具有“重大更改”的替代概念的其他上下文中,例如对 GUI 界面的大更改。

于 2014-06-11T04:34:39.707 回答
14

版本号完全由您决定。做对你有意义的事情并保持一致。没有人说你必须从 0、0.0、1.0 或 1.1 开始。

伟大的程序员实际上将版本编号系统用作当地的笑话。示例(维基百科):

从第 3 版开始,TeX 使用了一个特殊的版本编号系统,其中通过在小数点末尾添加一个额外的数字来指示更新,以便版本号渐近接近 π。这反映了 TeX 现在非常稳定的事实,预计只会进行较小的更新。当前的 TeX 版本是 3.1415926;最后一次更新是在 2008 年 3 月

对于 METAFONT:

Metafont 有一个类似于 TeX 的版本控制系统,每个版本的数字都渐近地接近 e。

最后,不完全是版本号,但同样有趣的是,谷歌的首次公开募股 (IPO) 已向美国证券交易委员会提交申请,筹集了 2,718,281,828 美元(请注意,e~2.718 281 828)。

我的观点是:不要觉得你需要随波逐流。要有创意和一致。

于 2010-09-16T16:44:42.463 回答
6

我认为这里有不同的因素。必须考虑版本号的心理/营销影响(版本号经常增加 => 更多 $$$,人们不想购买 0.99 测试版等)。在庞大的团队中工作时,“逻辑”版本号会有所帮助。

我喜欢 linux 的不稳定版本为奇数,稳定版本为偶数的方式。

于 2010-09-16T16:38:44.063 回答
2

为包选择版本号时npm,请注意,在package.json semver 范围内列出的依赖项在v1.0.0 以下将不起作用。那是,

"dependencies": {
    "my-package": "^0.5"
}

相当于

"dependencies": {
    "my-package": "0.5"
}

如果您希望能够使用 semver 范围,或者您想让其他人使用它们,您可能希望从 1.0.0 开始

于 2017-03-04T22:00:35.277 回答
0

通常,版本控制对程序员有一定的意义。增加主要数字可能表示阻止向后兼容性的大更改。版本号中的其他数字可能表示较小的功能增强或错误修复。

如果您担心 0.6.5 版本不完整,您可能希望在 1.0 版本下销售它。您的营销版本号不必与您的内部版本号匹配。例如,Windows 7 的版本号是 6.1。

我个人的偏好是从 0.1.0 开始,然后从那里开始。

于 2010-09-16T16:53:12.210 回答
0

取决于项目。对于简单的命令行工具,我通常从 0.9[.0] 左右开始,因为我只考虑在它们接近完成时发布或打包它们(或者无论如何准备进行 beta 测试)。更复杂的项目从 0.1[.0] 左右开始,并且有些人甚至从未见过 1.0。我认为 1.0 是一个发布版本(或至少是本地测试的 beta 或发布候选版本)并相应地计划。

对于团队项目,谁放置第一个版本标签就可以决定:)。

于 2010-09-16T16:55:42.227 回答
0

0.1.0 是我从那里开始并向上移动的。这就是我为 Adrian 的 Xploration 改编的内容,尽管在我早年我非常零星使用 1.0.0、0.0.1 和其他一些版本。但我确实建议从 0.1.0 开始并从那里开始。

根据 Semver,在 abc 中为 A 保留 a 和 c。您首先正式发布和 C。错误修复和补丁。这是因为主要版本通常会破坏旧代码。补丁只是修复错误。这都是个人喜好,0.99.0并不意味着你必须去1.0.0等等。我见过一些一直到0.218.42的。

于 2019-01-16T22:35:51.370 回答
-1

正如Arrieta之前正确评论的那样,版本号对您来说应该是有意义的。

可能如下:第一个 # 是市长发布,第二个 # 是相同的市长发布,添加了一些功能,第三个 # 是相同的市长发布,具有相同的功能但修复了错误或添加了很少(但足够重要)的更改。

1.3.2 => 第一版,具有更多功能和一些错误修复。

但是,对于最终用户,有些人习惯于最终版本的大数字。

例如:Corel 8,用于 8.0.0、8.0.1、8.2.2 等。Corel 9,用于 9.0.0...等。

而且更多的是关于营销策略,例如:Corel X5 而不是 Corel 15.0.2。

我会说这取决于版本号是给你还是给客户。

于 2010-09-16T16:59:00.107 回答
-1

当我准备好第一个可用但功能不完整的版本时,我通常会尝试判断它距离功能完整版本还有多远,例如,如果我的第一个可用功能完成了 33%,我将版本号设为 0.3.0 或相似的。然后,当我朝着功能完整的方向发展时,相应的版本会以类似的方式获得给定的数字。

但是,一旦您继续使用过去的功能,完整的版本控制就需要更改

于 2010-09-16T16:35:03.850 回答
-3

从 0.0.0 开始并从那里继续。

于 2010-09-16T16:26:12.930 回答
-12

从 1.1.1 开始,然后继续。

于 2010-09-16T16:37:17.280 回答