我分发的在线软件,并且总是在想如果有一个适当的方式更好地确定版本的数字。

让我们假设A B C D中的答案。当你增加每个组件?

你使用的任何其他版本数字的技巧,例如D mod2==1意味着它是一个在房子释放。

你有没有测试版本与其自己的版本数字,或者你有beta版每版号码吗?

有帮助吗?

解决方案

我开始喜欢一些应用程序(例如Perforce)使用的Year.Release [.Build]约定。基本上它只是说你发布的那一年,以及那一年内的顺序。所以2008.1将是第一个版本,如果你在一个月或三个月之后发布另一个版本,它将会转到2008.2。

这种方案的优点是没有隐含的<!> quot; magnitude <!> quot;在发布中,您可以讨论某个功能是否足以保证主要版本增量。

一个可选的附加功能是在内部版本号上进行标记,但这只是出于内部目的(例如,添加到EXE / DLL中,以便您可以检查文件并确保正确构建)。

其他提示

在我看来,几乎任何发布数方案可以作出更多或更少工作三立.该系统的我的工作上使用的版本数字,如11.50.UC3,U表示的32位Unix,and C3是一个小小的修改(修订包)号;其它的字母都用于其他平台类型。(我不推荐这种方案,但它的工作。)

有几个黄金规则,这迄今尚未说明,但它隐含在什么人都行了讨论。

  • 不释放的同一版本两次,一次版本1.0.0被释放的人,它可以永远不会被重新释放。
  • 释放数字应该增加单调这就是,代码版本1.0.1或1.1.0或2.0.0时应该始终以后版本1.0.0,1.0.9,或1.4.3(分别)。

现在,在实践中,人们需要释放。修复的旧版本,而新版本可供选择--见海湾合作委员会,例如:

  • 海湾合作委员会3.4.6被释放后4.0.0,4.1.0(和AFAICR4.2.0),但它仍然功能的海湾合作委员会3.4.x而不是添加额外的功能加入海湾合作委员会4.x.

所以你必须建立自己版本的编号方案仔细。

另一点,我坚信:

  • 发行版本的数量是无关的厘米(风险)系统版本的编号,除了微不足道的程序。任何严重的软件,与超过一个主要来源文件将有一个版本的数量无关的版本的任何单一的文件。

与SVN,可以使用的SVN版本的数量,但可能不会,因为它改变太不可预测。

为我工作,该版本数量是一个纯粹政治决定。

顺便说一下,我知道的软件,通过发布的版本1.00通过9.53,但后来改为2.80.这是一个严重的错误-取决于通过市场营销。授予版本4。x的软件是陈旧的,所以它没有立即使用的混淆,但版5.x的软件仍然在使用和出售,以及修订已经达到了3.50.我很担心什么我的代码,有工作的两个5.x(旧样式)和5。x(新风格)是去做时,不可避免的冲突发生。我猜我曾希望,他们将迪尔-达利上改变至5。x直到老5.x真的死了-但我可不乐观。我还用一个人工版号码,如9.60,表示3.50代码,以便使我可以做的理智 if VERSION > 900 测试,而不是必须这样做: if (VERSION >= 900 || (VERSION >= 280 && VERSION < 400), ,我在那里表示的版本9.00通过900人。然后还有重大的更改中引入的版本3.00.xC3-我的计划未能检测到的变化在短释放水平...抱怨...抱怨...

NB的:Eric Raymond提供 软件版本实践指南 其中包括(联)段命名(编号)发布。

我通常使用D作为构建计数器(编译器自动增量) 每次构建发布到<!> quot; public <!>时,我都会递增C. (并非每个版本都发布) A和B用作主要/次要版本号并手动更改。

我认为有两种方法可以回答这个问题,而且它们并非完全互补。

  1. 技术:根据技术任务增加版本。示例:D是内部版本号,C是迭代,B是次要版本,A是主要版本。定义次要版本和主要版本确实是主观的,但可能与基础架构的更改有关。
  2. 营销:根据多少<!>“new <!>”增加版本或<!>“;有用的<!>”;正在向您的客户提供功能。您还可以将版本号绑定到更新策略...对A的更改要求用户购买升级许可证,而其他更改则不需要。
  3. 我认为,最重要的是找到适合您和您的客户的模型。我见过一些甚至版本都是公开发布的情况,奇数版本被认为是beta或dev版本。我见过一些忽略C和D的产品。

    然后是Micrsoft的例子,其中对.Net框架版本号的唯一合理解释是涉及营销。

我们的政策:

  • 一个重大(>25%)更改或 新增功能性或者 接口。
  • B-小小的改变或 新增功能性或者 接口。
  • C-小变化 打破口。
  • D-修复一个 建立这不会改变的 接口。

人们倾向于想要比实际需要更难。如果您的产品只有一个长寿命分支,只需按其内部版本号命名连续版本。如果您有某种<!>“小错误修复是免费的,但您必须支付主要新版本<!>”,然后使用1.0,1.1 ...... 1.n,2.0,2.1。 ..等等。

如果你不能立即弄清楚你的例子中的A,B,C和D是什么,那么你显然不需要它们。

我对版本号的唯一用途是,客户可以告诉我他们正在使用2.5.1.0版或其他版本。

我的唯一规则旨在最大限度地减少报告该数字时的错误:所有四个数字必须仅为1位数

1.1.2.3

没问题,但是

1.0.1.23

不是。客户可能会将这两个数字(至少在口头上)报告为<!>“一对二 - 三<!>”。

自动递增构建号通常会导致版本号如

1.0.1.12537

这也没有什么帮助。

一个好的非技术方案只使用这种格式的构建日期:

YYYY.MM.DD.BuildNumber

其中BuildNumber是连续数字(更改列表)或者每天从1开始。

示例:2008.03.24.1或2008.03.24.14503

这主要针对内部版本,如果您不是每月发布的次数超过一次,那么公开发布会将版本打印为2008.03。维护版本标记为2008.03a 2008.03b,依此类推。它们应该很少超过<!>“c <!>”;但如果确实如此,那么您需要更好的质量保证和/或测试程序。

用户常见的版本字段应打印在友好的<!>“2008年3月<!>”中;格式,在关于对话框或日志文件中保留更多技术信息。

最大的缺点:只是在另一天编译相同的代码可能会更改版本号。但是你可以通过使用版本控制更改列表作为最后一个数字并检查它来确定日期是否也需要更改来避免这种情况。

我使用V.R.M,例如2.5.1

V(版本)更改是重要的重写
R(修订版)更改是重要的新功能或错误修复
M(修改)更改是次要修补(错别字等)

我有时也会在最后使用SVN提交号。

在一天结束时,这一切都非常主观,只取决于你自己/你的团队。

只要看看所有答案 - 都非常不同。

我个人使用Major.Minor.*.* - Visual Studio自动填写revison / build编号。这用于我工作的地方。

Apple技术说明中描述了一个源于旧Mac OS的良好的用户友好版本控制方案: http://developer.apple.com/technotes/tn/tn1132.html

我喜欢Year.Month.Day。所以,v2009.6.8将是<!> quot; version <!> quot;这篇文章。不可能(合理地)复制,并且当某些东西是更新的版本时非常清楚。您也可以删除小数并将其设为v20090608。

对于库,版本号会告诉您两个版本之间的兼容性级别,因此升级会有多困难。

错误修复版本需要保留二进制,源代码和序列化兼容性。

次要版本对不同的项目意味着不同的东西,但通常他们不需要保持源兼容性。

主要版本号可以打破所有三种形式。

我写了更多关于这里的理由。

在github世界中,跟随Tom Preston-Werner的<!>“semver <!>规范版本号。

来自 http://semver.org/

  

给定版本号MAJOR.MINOR.PATCH,增加:

     

当您进行不兼容的API更改时的MAJOR版本,MINOR版本   当您以向后兼容的方式添加功能时,以及PATCH   版本,当您进行向后兼容的错误修复时。额外   预发布和构建元数据的标签可用作扩展   到MAJOR.MINOR.PATCH格式。

对于内部开发,我们使用以下格式。

[Program #] . [Year] . [Month] . [Release # of this app within the month]

例如,如果我今天发布了#15应用程序,并且这是本月的第三次更新,那么我的版本#将是

15.2008.9.3

这完全不标准,但它对我们很有用。

对于过去的六个主要版本,我们使用了M.0.m.b,其中M是主要版本,m是次要版本,b是内部版本号。所以发布的版本包括6.0.2,7.0.1,......,最高11.0.0。不要问为什么第二个数字总是0;我问了好几次,没有人真的知道。自从1996年发布5.5以来,我们就没有非零。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top