初始版本使用什么?[关闭]


122

我通常从1.0.0版本开始我的项目。一旦有了一些东西,我就将其发布为1.0.0并继续使用1.1.0。

但是,这导致我编写的大多数东西都可用但不完全具有完整的1.0.0版本。然后,我添加功能并获得约1.6.0左右的体面版本。许多项目都从0.1.0版本开始,它将和我的1.0.0版本一样可用。

您会建议做什么?从1.0.0还是0.1.0开始?

最后一个数字仅用于Bugfix版本。您可以将我的1.0.0视为1.0,将0.1.0视为0.1对您来说更容易。


1
我刚刚发现了“语义版本控制”(semver.org),这几乎是我想要做的。但是,我并不是在创建API,而是在谈论API,因此1.0.0的建议实际上并不适用。
Noarth 2010年


Answers:


-24

我的版本控制由安装程序驱动。我希望它替换旧版本,所以我会不断增加对我来说有意义的跳转。

但是,有时版本控制由客户驱动,尤其是当您向公众发布代码时。

如果是您的电话,请执行最适合您的措施。我在1.0之前的版本中遇到了一些问题,因此我从此开始。


1
您在回答中并未真正解释任何内容。您没有提及您遇到的问题,因此我们可以就此进行讨论。您无需解释何时以及为什么版本由客户驱动,而OP并非如此。而且您没有解释安装程序如何以及为什么要驱动版本控制。您什至对答案很重要的意思是什么?明确定义的答案应包括每个决定的利弊,而您仅包含模糊的推理:)。
Eksapsy

224

语义版本2.0.0标准说:

最简单的方法是从0.1.0开始初始开发版本,然后为每个后续版本增加次要版本。

可以直接从0.3.0转到1.0.0。达到0.23.0也完全可以。不建议从0.4.0开始,因为它表明以前已经发布了版本。

另外,请注意将0.y.z其保留以进行快速迭代,以使初始开发(以及因此而产生的重大变化)不会让您处于142.6.0之类的愚蠢状态。不要破坏主要版本,而应在每次重大更改时都破坏次要版本,直到发布1.0.0:

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


这必须是公认的答案。从未见过有16个投票支持的答案
Nader Ghanbari

如果使用npm,则有一个陷阱。如果从0开始,package.json中的插入符号“ ^”的行为将有所不同。docs.npmjs.com/misc/semver#caret-ranges-123-025-004您可以使用0.x代替^ 0。在此情况下的json包中。因此,1.x易于启动和使用。
山姆

9

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

优秀的程序员实际上已经将版本编号系统用作本地笑话。范例(维基百科):

从版本3开始,TeX使用了特有的版本编号系统,其中通过在小数点末添加一个额外的数字来指示更新,因此版本号渐近地接近π。这反映了这样一个事实,即TeX现在非常稳定,并且预计只有很小的更新。TeX的当前版本是3.1415926;最后更新于2008年3月

对于METAFONT:

Metafont具有与TeX相似的版本控制系统,其中每个修订版本的数字渐近地接近e。

最后,不是一个确切的版本号,但同样有趣的是,Google的首次公开募股(IPO)已向SEC提交,筹集了2,718,281,828美元(注意,e〜2.718 281 828)。

我的观点是:不需要觉得需要跟随人群。具有创造力和一致性。


6

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

而且我喜欢linux的方式,即对不稳定版本使用奇数,对稳定版本使用偶数。


1

当我准备好第一个可用但没有功能完整的版本时,我通常会尝试判断它朝功能完整版本的方向走的距离,因此,例如,如果我的第一个可用功能是33%功能完整,则将版本号设置为0.3.0或类似。然后,当我朝着功能迈进时,完整的相应版本会以类似的方式获得给定的数字。

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


3
某种程度上,这意味着您只能进行0.9.0的操作,但是我知道很多项目都在进行中,例如0.25.0。
Noarth 2010年

我倾向于将最后一组数字用于较小的增量更改以及错误修复,并保留中间的数字组用于相当大的更改,因此永远不必真正需要为中间数字输入两位数
Tristan

1

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

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

相当于

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

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


有趣。您是否了解有关Semver范围为何在1.0.0以下无法正常工作的更多信息?由于npm注册表中使用0.0.x了很多软件包。
雷米(Remi)

我不知道为什么npm人会做出这个决定,或者在npm系统中的哪个地方做出/需要更改哪些内容以支持小于1版本的semver范围。我也想知道!
亨利

3
他们之所以做出这个决定,是因为它的^意思是“与版本兼容”。更多细节在这里。简而言之,0.y.z是指最初的开发,任何更改yz向后不兼容。在您的示例中^0.5 := 0.5 := 0.5.x,,因此它是一个范围。如果插入符范围不适用于该0.y.z范围,则除了插入符范围外,还可以使用比较器,hypen,x和代字号范围。
剂量ntmatter

0

通常,版本控制对程序员有一些意义。主数字的增加可能表明发生了较大的变化,从而阻止了向后兼容。版本号中的其他数字可能表示较小的功能增强或错误修复。

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

我个人的喜好是从0.1.0开始并从那里开始。


0

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

在团队项目中,放置第一个版本标签的人可以决定:)。


0

我从0.1.0开始,然后从那里开始。这是我为Adrian Xploration改编的内容,尽管我早年非常零散,并使用1.0.0、0.0.1和其他一些语言。但我确实建议从0.1.0开始并从那里开始。

根据Semver,在abc中为A保留a和c。您是第一个正式发行版和C。Bug修复和补丁。这是因为主要版本通常会破坏较旧的代码。补丁只是修复错误。这都是个人喜好,0.99.0并不意味着您必须达到1.0.0,依此类推。我已经看到一些一直达到0.218.42。


-1

版本号对您来说应该是有意义的,因为Arrieta之前已正确注释过。

可能遵循以下内容:第一#是市长版本,第二#是相同的市长版本,添加了一些功能,而第三#是相同的市长版本,具有相同的功能,但具有固定的错误或添加了很少(但足够重要)的更改。

1.3.2 => 1st Release,具有更多功能和一些错误。

但是,对于最终用户而言,有些用户习惯于大量使用最终版本。

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

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

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


-4

从0.0.0开始,然后从那里继续前进。


4
这是否意味着您实际上会发布0.0.0版本?我从要发布的第一个数字开始。
Noarth 2010年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.