一个版本中的数字通常代表什么(即v1.9.0.1)?


135

也许这是一个愚蠢的问题,但是我一直假设每个用句点表示的数字代表软件的单个组件。如果是这样,那么他们代表过什么吗?我想开始为软件的不同内部版本分配版本,但是我不确定该如何构造。我的软件有五个不同的组件。


数字可以表示您想要的任何内容,尽管它们通常与各个组件无关,而与发行版中的主要变更,次要变更和维护变更无关。查阅以下资源:netbeans.org/community/guidelines/process.html en.wikipedia.org/wiki/Release_engineering freebsd.org/releases/6.0R/schedule.html干杯
Alvaro Rodriguez

Answers:


198

1.9.0.1版本中:

  • 1:主要修订(新的用户界面,许多新功能,概念上的更改等)

  • 9:次要修订版(可能是对搜索框的更改,添加的1个功能,错误修复的集合)

  • 0:错误修复版本

  • 1:内部版本号(如果使用)—这就是为什么您看到使用诸如2.0.4.2709之类的.NET框架的原因

您不会发现很多应用程序降到四个级别,通常三个就足够了。


3
我正好使用这个,但是内部版本号是Subversion数据库存储库版本
Xetius

我使用的是相同的字母,但没有第三个数字,如major.minor.build中一样。原因是内部版本号无论如何都会增加,因此它本身可以识别发生了一些小错误修正的事实。
Mark Embling

9
major.minor.revision(错误修复).build对我来说最有意义。不幸的是,.NET版本类型被定义为major.minor.build.revision(可能是因为Microsoft过去仅使用3个版本位置?)。
凯文·基布尔

2
我正在尝试了解此系统。所以这是一个问题:如果新发行版具有功能和错误修复,该怎么办?
iTurki

6
@iturki通常,“较大”版本号优先。因此,如果您要从1.4.23版本更新应用程序,只需将其更新到1.5.0即可完成。您可以在发行说明中指出已修复的错误。同样,您可以从1.4.23更新到2.0.0。
Dillie-O

33

语义版本控制规范

这是2.0.0版的摘要:

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

  1. 当您进行不兼容的API更改时的主要版本,
  2. 以向后兼容的方式添加功能时的MINOR版本,并且
  3. 进行向后兼容的错误修复时的PATCH版本。

可以使用预发布和构建元数据的其他标签作为MAJOR.MINOR.PATCH格式的扩展名。


15

它可以是非常任意的,并且因产品而异。例如,在Ubuntu发行版中,8.04是指2008年4月。

通常,最左侧(主要)的数字表示主要版本,而您向右移动得越远,涉及的更改就越小。



8

得分越多,发行量就越小。除此之外,没有真正的坚实标准-可以根据项目维护者的决定来表示不同的含义。

例如,WordPress遵循以下原则:

1.6-> 2.0-> 2.0.1-> 2.0.2-> 2.1-> 2.1.1-> 2.2 ...

1.6到2.0将会是一个很大的版本-功能,接口更改,API的重大更改,某些1.6模板和插件的损坏等。2.0到2.0.1将会是一个次要版本-也许修复了一个安全漏洞。2.0.2到2.1将是一个重要的版本-一般而言,是新功能。


8

如其他答案所述,数字可能很有用,但请考虑一下数字也可能毫无意义... Sun,您知道SUN,java:1.2、1.3、1.4、1.5或5,然后是6。在旧的Apple II版本中,数字意味着有事 如今,人们放弃了版本号,取而代之的是愚蠢的名称,例如“ Feisty fig”(或类似名称),“ hardy heron”,“ europa”和“ ganymede”。当然,这没什么用,因为,在停止更改程序之前,您将耗尽木星的卫星,并且由于没有明显的命令,您无法分辨哪个是新的。


4

在版本v1.9.0.1中: 当您不想在预发行版中使用名称或不希望使用-alpha,-beta之类的版本时,这是显式的版本控制方案

1:主要版本可能会破坏向后兼容性

9:添加了新功能以支持您的应用程序,以及与以前版本的向后兼容性。

0:一些小错误修复

1:内部版本号(预发行版号)

但如今,您将找不到这样的版本控制方案。请参阅语义版本控制[semver2.0] https://semver.org/


3

版本号通常不代表单独的组件。对于某些人/软件,这个数字相当随意。对于其他版本,版本号字符串的不同部分确实代表不同的内容。例如,某些系统在文件格式更改时增加部分版本号。因此,V 1.2.1是与所有其他V 1.2版本(1.2.2、1.2.3等)兼容的文件格式,但与V 1.3不兼容。最终由您决定要使用哪种方案。



2

这取决于,但是典型的表示形式是major.minor.release.build

哪里:

  • major是软件的主要发行版,请考虑.NET 3.x
  • minor是您软件的次要发行版,请考虑.NET x.5
  • 版本是该版本的版本,通常,错误修正会增加该版本
  • build是一个数字,表示您已执行的构建次数。

因此,例如1.9.0.1,意味着它是软件的1.9版本,紧随1.8和1.7等。其中1.7、1.8和1.9通常都以某种方式添加了一些新功能以及错误修正。由于它是xx0.x,因此它是1.9的初始版本,并且是该版本的第一个版本。

您也可以在Wikipedia上有关该主题的文章中找到良好的信息。


2

大,小,小虫

(或对此的一些变化)

错误通常是没有新功能的错误修复。

次要变化是增加了新功能但没有以任何主要方式更改程序的一些更改。

Major是程序的一项更改,该更改要么破坏了旧功能,要么太大,以某种方式改变了用户应如何使用该程序。


2

每个人都可以选择要使用这些数字的方式。我一直很想称呼发行版abc,因为它还是很愚蠢的。话虽如此,我在过去25多年的发展中所看到的往往以这种方式起作用。假设您的版本号是1.2.3。

“ 1”表示“主要”修订。通常这是一个初始发行版,一个较大的功能集更改或一个代码的重要部分的重写。确定功能集并至少部分实现该功能集后,您将转到下一个数字。

“ 2”表示系列中的版本。通常,我们使用这个职位来掌握上一个主要版本中没有的功能。这个位置(2)几乎总是表示功能已添加,通常带有错误修复。

大多数商店中的“ 3”表示补丁程序发布/错误修复。至少在商业方面,几乎从来没有这表明增加了重要的功能。如果功能显示在位置3,则可能是因为有人在我们知道必须进行bug修复发布之前签入了某些内容。

超越“ 3”位?我不知道人们为什么要做这种事情,这只会变得更加令人困惑。

值得注意的是,其中一些OSS使得所有这些都不合理。例如,Trac版本10实际上是0.10.XX,我认为OSS世界中的许多人要么缺乏信心,要么就是不想宣布他们已经完成了重大发行。


2

从C#AssemblyInfo.cs文件中,您可以看到以下内容:

// Version information for an assembly consists of the following four values:
//
//      Major Version
//      Minor Version 
//      Build Number
//      Revision
//
/ You can specify all the values or you can default the Build and Revision Numbers 
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]

2

release.major.minor.revision是我的猜测。
但是不同产品之间的差异可能很大。



1

对。主要版本添加了重要的新功能,可能会破坏兼容性或具有明显不同的依赖性等。

次要版本也增加了功能,但它们较小,有时从beta主要版本中精简移植的版本。

如果有第三个版本号组件,则通常用于重要的错误修正和安全修正。如果还有更多,那么它实际上取决于产品,因此很难给出一般性答案。


1

我认为主要的release.minor release.bug修复模式很普遍。

在某些企业支持合同中,$$(或违反合同责任)与如何指定特定版本有关。例如,一份合同可能使客户有权在一段时间内获得一些主要版本,或者承诺一个时期内次要版本的数量少于x,或者可以继续为许多客户提供支持发布。当然,无论合同中用多少字来解释什么是主要发行版还是次要发行版,它始终是主观的,并且始终存在灰色区域–从而导致软件供应商可以将系统玩违反此类合同规定。


1

人们并不总是意识到版本号(例如2.1、2.0.1或2.10)之间的细微差别-向技术支持人员咨询他们遇到此问题的次数。开发人员注重细节并且熟悉层次结构,因此这对我们是一个盲点。

如果有可能,请向您的客户公开一个更简单的版本号。


1

对于库,版本号告诉您两个发行版之间的兼容性级别,以及升级的难度。

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

次要发行版对不同的项目意味着不同的事情,但是通常它们不需要保持源兼容性。

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

我在这里写了更多关于基本原理的文章。


0

主要,次要,补丁,内部版本,安全补丁等的组合

前两个是主要和次要-其余将取决于项目,公司以及有时取决于社区。在像FreeBSD这样的操作系统中,您将有1.9.0.1_number代表一个安全补丁。


0

取决于语言,例如Delphi和C#具有不同的含义。

通常,前两个数字分别表示主要版本和次要版本,例如,第一个实际版本为1.0,一些重要的错误修正和次要新功能为1.1,主要新功能为2.0。

第三个数字可以引用“真正的次要”版本或修订版。1.0.1只是对1.0.0的很小的错误修正。但是它也可以带有源代码管理系统中的修订号,也可以是随每个构建而递增的递增号。或日期戳。

这里有更多细节。“正式”在.net中,这4个数字是“ Major.Minor.Build.Revision”,而在Delphi中则是“ Major.Minor.Release.Build”。我使用“ Major.Minor.ReallyMinor.SubversionRev”进行版本控制。


0

通常,编号采用version.major.minor.hotfix的格式,而不是各个内部组件的格式。因此v1.9.0.1将是版本1,(v1的)主要版本9,(v1.9的)次要版本0,(v1.9.0)的修补程序1。


0

第一个数字通常称为主版本号。它基本上用于表示内部版本之间的重大更改(即,当您添加许多新功能时,会增加主要版本)。同一产品的主要版本不同的组件可能不兼容。

下一个数字是次要版本号。它可以代表一些新功能,或者许多错误修复或小的体系结构更改。同一产品的组件在次要版本号上有所不同,可能会也可能不会一起工作,也可能无法一起工作。

下一个通常称为内部版本号。这可能会每天增加,或随每个“已发布”的版本而增加,或者与每个版本一起增加。两个组件之间可能只有很小的差异,它们之间的差异仅是内部版本号,并且通常可以很好地协同工作。

最终编号通常是修订号。通常,它会被自动构建过程使用,或者在进行“一次性”一次性构建的测试时使用。

当您增加版本号时,取决于您,但是它们应该始终增加保持不变。您可以使所有组件共享相同的版本号,或者仅增加已更改组件的版本号。


0

复杂软件的版本号代表整个软件包,并且与部件的版本号无关。Gizmo版本3.2.5可能包含Foo版本1.2.0和Bar版本9.5.4。

创建版本号时,请按以下方式使用它们:

  1. 第一个数字是主要版本。如果您对用户界面进行了重大更改或需要中断现有界面(以便用户必须更改其界面代码),则应使用新的主版本。

  2. 第二个数字应表示已添加新功能或内部某些功能不同。(例如,Oracle数据库可能决定使用不同的策略来检索数据,从而使大多数事情变得更快而某些事情变得更慢。)现有界面应继续工作,并且用户界面应可识别。

  3. 版本编号进一步取决于编写软件的人-Oracle使用五个(!)组,即。Oracle版本类似于10.1.3.0.5。从第三组开始,您应该只引入错误修正或功能上的较小更改。


0

对于major.minor,变化较小的将是前两个,之后可以是从构建,修订,发行到任何自定义算法的任何内容(例如某些MS产品)


0

每个组织/团体都有自己的标准。重要的是您要坚持选择的任何符号,否则您的客户会感到困惑。话虽如此,我通常使用3个数字:

x.yz.bbbbb。其中:x:是主要版本(主要新功能)y:是次要版本号(较小的新功能,无需对UI进行更改的少量改进)z:是服务包(与xy基本相同,但已修复一些错误,bbbb:是内部版本号,只有在“关于”框内才能真正看到,并提供其他详细信息以供客户支持。bbbb是免费格式,每个产品都可以使用它自己的格式。


0

这是我们使用的:

  1. 第一个数字=整个系统时代。每两年更改一次,通常代表技术或客户功能或两者的根本变化。
  2. 第二个数字=数据库架构修订。此数字的增加需要数据库迁移,因此是一个重大更改(或系统复制,因此更改数据库结构需要仔细的升级过程)。如果第一个数字更改,则重置为0。
  3. 第三个数字=仅软件更改。由于数据库架构不变,因此通常可以在每个客户端的基础上实现。如果第二个数字更改,则重置为零。
  4. Subversion版本号。我们使用TortoiseSVN工具在构建时自动填充它。此数字从不重置,但会不断增加。使用此方法,我们始终可以重新创建任何版本。

该系统对我们有好处,因为每个数字都具有明确而重要的功能。我已经看到其他团队在努力解决主号码/副号码问题(重大变化有多大),但我看不出这样做有什么好处。如果您不需要跟踪数据库修订,只需使用3位或2位数字的版本号即可,使工作更轻松!


0

版本:v1.9.0.1

哪里-

。v是version的缩写。各个公司的情况各不相同,这取决于其组织采用的术语。在某些组织(如1.9.0.1)中它可能会保持沉默

。1表示主要版本,将在应用程序堆栈,基础结构(平台)或公开网络接口中的体系结构修改上进行更新

。9个未成年人,将在活动上进行更新,例如添加新组件,例如ui,api,数据库等;在特定的架构下

。0表示功能,将对现有组件(ui,api,数据库等)的所有增强功能进行更新

。1表示所有主要,次要和功能阶段的构建计数器。它还包括生产后发布的修补程序。

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.