BCB中的版本Version info怎么定值?

牧牛人软件 2009-06-18 07:30:23
Project-》Option-》Version info中分为:Major、Minor、Release、Buil四项。

我一直是自己瞎弄的,很随意。

对Major、Minor、Release、Buil四项定值规范的做法是怎么样的?

希望听到您的意见,谢谢!
...全文
174 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
牧牛人软件 2009-06-19
  • 打赏
  • 举报
回复
谢谢!
牧牛人软件 2009-06-18
  • 打赏
  • 举报
回复
build号则在每次编译时自动加1?
怎么设置才会自动加一?
僵哥 2009-06-18
  • 打赏
  • 举报
回复
我现在使用的方法:
1.2.3.4

1. 重大版本修改,可能是使用不同的协议不同的接口
2. 功能性版本,重要功能的增加
3. BUG修复
4. 优化(对数据等不产生实质的影响)
ccrun.com 2009-06-18
  • 打赏
  • 举报
回复
版本号没有严格的规定.
一般来说,主版本,也就是第一个点前面的数字,是指软件的大规模改动,第二个和第三个分别是改动稍小一些或解决了某些BUG之类的.至于Build号,一般自动递增就可以了.
harkmonkey 2009-06-18
  • 打赏
  • 举报
回复
学习!
yangangs 2009-06-18
  • 打赏
  • 举报
回复
按公司的版本规范就可以了啊
Behard 2009-06-18
  • 打赏
  • 举报
回复
这个东西每个公司都有自己的规定
我不懂电脑 2009-06-18
  • 打赏
  • 举报
回复
1. 引言

1.1. 名词解释

先了解一些名词,有的是我自创的:
Nightly Build
字面直译为:每晚编译。实现了自动编译,摆脱了编译的手工劳动; 对于大型系统,编译耗时,在晚间完成则节约了工作成本; 实现版本号的自动管理(Build号,每次编译自增);

milestone 版本
里程碑版本。在编译时,使用里程碑的代码。例如定义为 RELEASE 的里程碑,能在每次重新将代码提升为 RELEASE 时,删除上一次建立的 RELEASE 的LABEL/TAG,再重新为新代码打上 LABEL/TAG。但更好的方法是将稳定的 LABEL 记录在一个文件(如:PROMOTION)中,这个文件的最新内容即为里程碑代码的标签(TAG/LABEL),删除 LABEL/TAG 的危险动作换成了新建 LABEL/TAG 和 Checkin 文件。

sticky 版本
固定版本。有时想要编译某一固定状态(指定的LABEL/TAG)代码,可将这个 LABEL/TAG 传给编译系统,进行编译,这种编译方式称为 sticky 版本的编译。

nightly 版本
使用最新的代码进行编译。如果代码自上次编译以来没有更改,则无需编译。

版本号
版本号的格式为:a.b.c.d。其中 a - 主版本号(Major version), b - 副版本号(Minor version), c - 发布号(Release), d - 编译号(build)。主版本号和副版本号在项目计划中便已指定,标志着重要的功能变动。Release版本号 c,用于体现小的功能变更或用来管理项目的分支。build号则在每次编译时自动加1。

PROMOTION
版本提升。某一里程碑(LABEL/TAG标记)代码,随着研发周期的继续,如果能够顺利通过各级测试,并最终发布。则其对应的产品必然经历 daily build版本、alpha测试版本、beta测试版本、release版本。
Starteam 版本控制系统,有专门的 LABEL 管理这种事件,叫做 PROMOTION。对于其他版本控制系统,我们能非常容易的使用文件记录LABEL的方式相对应。
Starteam 的 PROMOTION 请参见我的一篇文章《Starteam Howto》。

版本控制系统
版本控制系统,如:CVS、STARTEAM、PVCS、VSS等,是自动编译系统的基础。熟练掌控其名利行工具的使用是关键。推荐使用CVS作为版本控制系统,因为其命令行功能最强大。

1.2. 建立系统的命令行编译过程

如果没有命令行的编译过程,想要构建自动化的编译系统,简直是天方夜谭。
对于 UNIX 的系统,支持命令行编译自然不再话下。简单至一个 Makefile,到复杂的 SHELL 脚本、automake+autoconf 系统。
对于 视窗系统 上的项目,比如说 VC,其实也有命令行支持。从 VC5.0的 NMAKE 到 VC6.0 的 MSDEV 命令。不过 视窗系统 平台的 shell 实在功能有限。查一下 视窗系统 的关于 batchfile 的帮助吧,只有可怜的半页,DOS时代的古董。我们需要使用扩充的命令行工具来扩展。能的选择有 JAVA、PERL、PYTHON、CYGWIN。我选择了 Cygwin ,是因为我只会 Unix bash。 8-)

1.3. 关于版本号自增
实现 BUILD 号自增,其实只要将版本号写入文件,并版本控制。每次编译成功后,版本号+1,再重新 Checkin 即可。
对于只需要一个版本号的系统,非常简单。对于复杂的系统,比如说一个 视窗系统 平台的程式,可能每一个 dll, exe 都需要不同的版本。也能把这些相关信息写入一个文件,每次编译更新完毕代码后,在将一个文件控制的众多版本信息分别写到其他独立的版本控制文件中(如 VC中的 *.rc 文件中的 FileVersion, ProductVersion 等)。

版本号的格式,参见:版本号说明。

1.4. 关于代码更新检查
如果代码没有更改,自动编译系统还要去编译,去使版本号递增,实在太傻,浪费时间,也会使研发、测试陷入混乱。
能将上一次编译的时间记录在一个文件中,再次编译时,先比较自从上次编译以来,到目前为止是否有代码改动,如果有代码改动则版本号自增,并触发编译系统。这看起来有点不可思议,其实一个命令就够了:
$ cvs -q diff --brief -D "上一次编译日期"


1.5. 关于软件包签名和下载
认为编译完成就完事大吉,是错误的。如果不进行进一步的处理,下次编译将会冲掉上次编译的结果。因此需要把生成的软件包,按照规则重新命名,例如加上版本号和编译日期。如果软件包不便于访问,也不利于工作的开展。在编译/发布机提供 FTP 服务是最最佳的。还要说说软件签名。不仅是为了防止黑客的恶意篡改,也是协助下载用户对软件包进行完整性检查的方法。参见我的一篇文件:《PGP/GPG HOWTO》。

1.6. 软件研发周期和版本号演进示意图(图略)
fairchild811 2009-06-18
  • 打赏
  • 举报
回复
基本上是越后面的说明改动越小。各个公司不一致吧
我来看看CB 2009-06-18
  • 打赏
  • 举报
回复
随便你怎么弄。
wf2091139 2009-06-18
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wgh166 的回复:]
build号则在每次编译时自动加1?
怎么设置才会自动加一?
[/Quote]
勾上 auto-increment build number

13,824

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧