如何定义软件的版本号?

时间:2009-07-18 01:05:05

标签: language-agnostic versioning

确定我应该用于软件或组件的版本号的最佳方法是什么?是否有设置版本号的一般规则?

我很确定这是一个基本问题,但在搜索一段时间后我没有找到任何有用的东西。

8 个答案:

答案 0 :(得分:6)

Microsoft的惯例是:

[major].[minor].[revision].[build]

或关注Jeff's versioning system

答案 1 :(得分:3)

或者,您可以遵循Ubuntu使用年份和月份的惯例。

例如,2009年4月的发布将是:

v9.04

答案 2 :(得分:3)

我一直在做这个过渡,直到找到更好的解决方案。我没有构建许多大型应用程序,主要是报表和较小的宏,但对我来说,跟踪更改和版本仍然很重要。

[当前年]。[当月]。[当天]

FileName 9.7.17.rpt例如。

它适用于我和我的老板,它提供了一个值,您可以将其与今天的日期进行比较,以查看文件的年龄。我还将changelog.txt文件保存在与最新版本相同的文件夹中,并跟踪以前版本中的所有更改。我还在OneNote中每个项目选项卡上的版本控制页面中跟踪所有版本。

感谢您的回答。我还会介绍如何将项目存储起来。

每个项目都有自己的文件夹。在该文件夹中,我将有4个主要项目,帮助我跟踪项目中发生的事情。

  • 旧版本文件夹
  • 项目可能需要的任何参考资料的文件夹
  • 实际项目文件
  • 更改日志

那棵树看起来像这样。

Project X
    Old versions
        X Report 9.4.12.rpt
        X Report 9.5.3.rpt
        X Report 9.7.20.rpt
    Reference
        SQL calls.txt
        Client list.txt
        Procedures.doc
    X Report 9.7.29.rpt
    X Report changelog.txt

这种跟踪我的工作的方式确实减少了我需要花费大量时间来记录任何事情并以标准方式组织它,所以如果我的老板需要抓住我曾经做过的事情,即使他知道究竟是什么意味着什么,它在哪里。

为了在我的网络文件夹中存储多个项目,我有这些文件夹。

  • 收件箱
  • 项目
    • @Archived Projects
    • 当前项目1
    • 当前项目2
    • 当前项目3
  • 参考

收件箱是我随后要处理的随机内容,或者是我的老板可以抛出我以后需要的东西的文件夹。 Projects文件夹包含我目前正在处理的所有项目,然后当我完成或他们不再成为当前优先级时,他们会被扔进@Archived Projects。参考是一般工作参考资料的文件夹,如政策和程序,电话清单,组织结构图,火灾逃生计划。我可能永远不会使用它们,但是有一个地方放置那种东西而不是挖掘旧电子邮件,这是令人欣慰的。

答案 3 :(得分:2)

这是一个非常常见的问题。你确定你搜索过吗?维基百科有一篇关于software versioning的好文章。

答案 4 :(得分:2)

就像唐纳德·克努特(Donald Knuth)对待TeX一样 - 它的版本在每次发布时会收敛到π,并且在他去世时实际上会变成π。

  

从版本3开始,TeX使用了   特殊版本编号   系统,已进行更新   通过添加一个额外的数字表示   小数结束,这样   版本号渐近   接近π。这是一个反映   事实上TeX现在非常稳定,   只有很小的更新   预料。当前版本   TeX是3.1415926;它是最后更新的   在2008年3月。

来自Wikipedia

答案 5 :(得分:1)

一个常见的方案似乎是使用[major]。[minor]。[revision]。主要版本号在大型/主要功能更改或重写时增加(或者只要您没有达到稳定版本就保持0,尽管许多开源项目在这里永远不会超过0),次要版本号会因次要更改而增加,例如一组错误修正,一个附加的小功能等。每次构建时的修订增量,并反映跟踪您的确切版本的最小粒度。通常情况下,小修正等等都会被卷入其中。

答案 6 :(得分:0)

通常第一个数字是主要更改/主要版本,第二个数字用于添加次要功能和错误修复,第三个数字用于小错误修复和修订号。

实施例。 1.0.0

答案 7 :(得分:0)

取决于很多事情。

如果您正在进行.Net工作,您可以让系统自动跟踪.dlls和.exe文件的版本号。

我们经常使用subversion修订版作为版本号的一部分。我们使用如下系统:

major.minor.svn版本

我们根据内部决策手动递增主要/次要,并使用svn-version进行传播以区分构建。

最重要的是版本号对您的用户有意义。