我在网上发布软件,始终不知道是否有更好地定义版本号以适当的方式。
让我们假设ABCD中的答案。 当你增加每一个组件?
你使用任何其他版本的一些花样,如d模2 == 1意味着它是一个只在内部释放?
你有自己的版本号的测试版本,或者你有每个版本号测试版本?
我在网上发布软件,始终不知道是否有更好地定义版本号以适当的方式。
让我们假设ABCD中的答案。 当你增加每一个组件?
你使用任何其他版本的一些花样,如d模2 == 1意味着它是一个只在内部释放?
你有自己的版本号的测试版本,或者你有每个版本号测试版本?
我开始喜欢Year.Release [.Build]惯例,一些应用程序(如Perforce公司)使用。 基本上,它只是说在你释放的一年,而一年之内的序列。 所以2008.1将是第一个版本,如果你发布的另一个月或3后,它会去2008.2。
这种方案的优点是有释放没有隐含的“大小”,在这里你进入有关功能是否足够大,以保证一个主要版本增量或不争论。
一个额外的选择是对版本号标记,但是,往往是仅用于内部使用(例如加入到EXE / DLL,以便您可以检查该文件,并确保正确的版本是那里)。
在我看来,几乎所有的版本号方案可以做出或多或少的三立工作。 我的工作的系统使用的版本号,如11.50.UC3,其中U表示32位的Unix和C3是一个次要版本(修订包)号码; 其他字母用于其他平台类型。 (我不建议这个方案,但它的作品。)
有哪些至今没有被规定了几个金色的规则,但是这是在人们已经讨论了隐。
现在,在实践中,人们就不得不释放修复旧版本,而新版本可供选择 - 看GCC,例如:
所以,你必须精心打造您的版本编号方案。
另一点,我坚信:
使用SVN,你可以使用SVN版本号 - 但可能不会,因为它改变了太多不可预见。
对于我一起工作的东西,版本号是一个纯粹的政治决定。
顺便说一句,我知道的,通过从1.00版本发行通过9.53是去软件,但随后改为2.80。 这是一个严重的错误 - 通过市场决定的。 诚然,软件的版本4.x版为IS /过时了,所以才没有立即作出了混乱,但软件的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)
在那里我用900表示版本9.00再有就是在版本3.00.xC3引入了显著变化-我的计划失败,以探测次要版本水平的变化... ...叽...叽
注 :雷蒙德提供软件发布实践HOWTO包括命名(编号)释放(链接)部分。
我通常使用d作为构建计数器(由编译器自动增量)我每到“公共”(未每次构建被释放)构建被释放时间递增C A和B被手动用作主要/次要版本号和改变。
我认为有两种方法来回答这个问题,他们是不是完全免费的。
底线,我想,是找到适合你和你的客户工作的模型。 我见过有些情况下甚至版本的公开版本,和奇数版本被认为是测试版,或开发版本。 我已经看到了一些产品,忽略C和d都在一起。
再有就是从项目建立在微软,哪里来的版本号为.NET Framework的唯一合理的解释是,市场参与的例子。
我们的政策:
人们往往想使这个更难比它真正需要。 如果你的产品只有一个长寿命的分支,只是名称后续版本通过其版本号。 如果你有某种形式的“小bug修复是免费的,但你必须付出重大的新版本”,然后用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月”友好的格式打印,保留在关于对话框的更多技术信息或日志文件。
最大的缺点:只是编译在另一天同样的代码可能会改变版本号。 但是你可以通过使用版本控制变更表最后号码和检查针对确定的日期必须和改变避免这种情况。
我使用VRM如2.5.1
V(版本)的变化是一个重大改写
R(修订版)的变化是显著新功能或错误修复
M(修改)的变化是次要的BUX修复(错字等)
我有时会使用SVN提交数就结束了。
它在一天结束时,所有真正的主观,简单地达到自己/你的团队。
只要看一看已全部的答案 - 都非常不同。
我个人使用Major.Minor.*.*
-如果Visual Studio中在修订时填充/自动生成号码。 这是用在我工作了。
一个好的用户友好的版本方案起源于老的Mac OS在这个苹果技术说明中描述: http://developer.apple.com/technotes/tn/tn1132.html
我喜欢Year.Month.Day。 所以,v2009.6.8将是这个职位的“版本”。 这是不可能重复的(合理的),它很清楚,当事情是一个较新的版本。 你也可以删除小数并使其v20090608。
在库的情况下,版本号告诉你有关兼容性的两个版本,因而如何艰难的升级将是之间的水平 。
一个bug修复版本需要保持二进制,源和序列化兼容。
次要版本意味着不同的事情不同的项目,但通常他们并不需要保存源代码的兼容性。
主要版本号码都可以破解所有三种形式。
我写更多的理由在这里 。
在GitHub的世界里,它已成为流行跟随汤姆·普雷斯顿·沃纳的“semver”规范的版本号。
从http://semver.org/ :
给定一个版本号MAJOR.MINOR.PATCH,递增:
当你做出不兼容的API的变化,次要版本,当你在一个向后兼容的方式添加功能主要版本,补丁版本,当你做向后兼容的bug修复。 预发行版本的附加标签,并建立元数据作为扩展到MAJOR.MINOR.PATCH格式。
对于内部开发中,我们使用以下格式。
[Program #] . [Year] . [Month] . [Release # of this app within the month]
例如,如果我放开了申请#15的今天,这个月它的第三次更新,那么我的版本号将是
15.2008.9.3
这完全是不规范的,但对我们来说是有益的。
在过去的六个主要版本中,我们使用M.0.mb其中M为主要版本,m是次要版本,和b是内部版本号。 因此,发行版本包括6.0.2,7.0.1,...,高达11.0.0。 不要问为什么第二个数字始终为0; 我问了很多次,没有人真正知道。 我们还没有一个非零有因为5.5是在1996年发布。