14

我了解 Microsoft 在对其产品进行版本控制时使用此模板:Major.Minor.Build.Revision。

当“开发人员”想要表明软件有很大的变化并且不能假设向后兼容性时,就会更改专业。也许代码的主要重写已经完成。

次要数字表示具有向后兼容性目的的显着增强。

内部版本号是一个小的变化,例如重新编译相同的源。

修订版用于修复安全漏洞,应该是完全可互换的。Build 和 Revision 都是可选的。此信息基于MSDN 版本类

你如何对你的项目进行版本控制,为什么要以这种方式对它们进行版本控制?

4

12 回答 12

7

我们通常在我工作的地方做 major.minor[.maintenance[.build]],但每个项目似乎略有不同。

主要/次要与您提到的相同。每次构建服务器运行时,小(错误)修复和构建都会增加维护。

于 2008-09-26T22:27:01.693 回答
4

我个人喜欢使用一个专注于项目/产品用户可以期望的向后兼容性级别的方案:

1.0之前:

  • 0.0.1 = 首次发布
  • 0.-.X = 向后兼容更新
  • 0.X.0 = 向后不兼容的更新

1.0之后:

  • -.-.X = 更新而不更改界面
  • -.X.0 = 使用向后兼容的接口添加更新
  • X.0.0 = 向后不兼容的更新

将兼容性作为版本号的中心点,让用户,尤其是如果产品是库,更容易判断他们是否可以期待平滑和安全的升级。

于 2008-09-26T22:58:18.013 回答
2

我经常看到 Xyz,其中 X 是发布号之后的年份,yz 是一年中的月份。即 201 是 1 月,发布后 2 年。即5月份产品发布时,它的第一个发布号是105。明年2月发布的是202。

于 2008-09-26T22:29:49.300 回答
2

我们通常根据当前的发布日期 YYYY.MM.DD.* 对项目进行版本控制,并且我们让内部版本号自动生成,例如,如果我们今天有一个版本,它将是 2008.9.26.BUILD。

于 2008-09-26T22:33:03.817 回答
1

我使用major.minor.point.revision,其中point 是仅修复错误的版本,revision 是存储库版本。这很容易而且效果很好。

于 2008-09-26T22:26:55.797 回答
1

我只做Major.minor。由于我是一个开发网络应用程序的单一开发人员(偶尔需要帮助),因此大多数人不会关心我所做的小修复。因此,当我进行一些更改/升级时,我只是在添加新功能和主要版本号时迭代次要版本。否则,就版本号而言,我只是忽略小修复(尽管如果我需要自己参考,我确实有 Subversion 修订号)。

于 2008-09-26T22:29:36.210 回答
1

我从事许多较小的项目,我个人发现这很有用。

PatchNumber.DateMonthYear

这适用于基于 Web 的小型工具,用户可以在其中查看上次更新时间和更新频率。

PatchNumber 是已完成的发布数量,其余的用于向用户显示发布时间。

于 2008-09-26T22:29:38.783 回答
1

Major.minor.patch.build 补丁是修补程序或补丁版本。

如果您可以通过 QA 获得并使用 SVN,则可以使用 svn HEAD 修订版作为内部版本号。这样,每个构建都根据源代码控制描述了它的来源以及构建中的内容。这确实意味着您的构建会出现差距(1.0.0.1、1.0.0.34 ....)

于 2008-09-26T23:09:39.937 回答
1

Major.Minor.BugFix.SVNRevision

例如:3.5.2.31578

  • SVN 修订版为您提供了非常准确的代码发送给客户。您绝对确定该错误修复是否存在。
  • 如果您遇到应用程序错误,它还有助于找到正确的 PDB。只需匹配构建服务器上的 SVN 修订版,将 PDB 复制到 EXE 位置,打开调试器,您就会得到崩溃堆栈跟踪。
于 2008-09-27T01:25:40.030 回答
0

我只有一个号码。第一个版本是001. 第二个版本的第三个测试版是002b3,依此类推。这只是个人的想法,我目前实际上没有任何“发布”的东西,所以这都是理论。

于 2008-09-26T22:57:06.333 回答
0

我开始使用与 Ubuntu 类似的伪格式:Y.MMDD

这有几个原因:

  • 检查版本要求更容易:if (version < 8.0901) die/exit/etc. ;
  • 它可以在您的构建过程中自动生成

在第二点(红宝石和耙子):

def serial(t)
   t = Time.now.utc if not t.instance_of?(Time)
   t.strftime("%Y").to_i - 2000 + t.strftime("0.%m%d").to_f
end

serial(Time.now)     #=> 8.0926
serial(Time.now.utc) #=> 8.0927

注意:t.strftime("%Y.%m%d").to_f - 2000遇到浮点错误:8.09269999999992

于 2008-09-27T00:30:00.507 回答
0

我曾经喜欢在 80 年代对他们的 Clipper 编译器进行版本控制的 Nantucket 方式:

快船 1984年冬季
快船 1985 年夏季
快船 1985 年冬季
快船 1986 年秋季
快船 1987 年夏季

哦,还有覆盖......

[泪眼婆娑]

于 2008-09-27T01:40:49.060 回答