让软件版本信息自动引用SVN修订版本号

  软件发布出去后通常用户反馈一个BUG时往往需要知道程序版本号。当软件发布的版本多了后版本号的管理变的麻烦,当然正式版本发布周期较长手动管理版本号是合理的。如果是临时编译的测试版本,则可以让程序自动引用SVN修订号。微软的visual studio好像可以每次编译自动增加版本号,不过这个自动版本号对于查bug似乎没什么意义。使用SVN修订号作为程序版本信息的一部分,可以很方便的得到编译这个程序时的代码的原貌,对于查BUG意义重大。

  那么如何在程序中引用SVN修订版本号呢。我们可以使用svn info -R HEAD 命令查看svn目录revision。因此以C语言为例,可以写一个脚本自动生成一个头文件,让软件引用这个头文件即可实现在软件中显示svn revision。

下面是我写的一个批处理脚本:

@echo off
set src_dir=%~dp0
for /f "delims=" %%i in ('svn info -r HEAD "%src_dir%" ^| findstr "Revision"') do set rev=%%i
set rev=%rev:~10%
echo #define SVN_REVISION %rev% > "%bin_dir%"svnversion.h

运行这个脚本会在脚本所在目录生成一个svn revision版本号的头文件svnversion.h,我们软件中引用这个头文件就可以得到svn 修订版本了。

为了让其“自动”,可以利用svn钩子来自动更新这个头文件。

如果安装有tortoiseSVN,我们可以在其设置界面找到Hook scripts页。分别添加一个Post-commit Hook和Post-update Hook并指定运行这个脚本,即可在每次提交或更新代码后自动更新svnversion.h

 

 

 

posted on 2012-07-13 23:08  loongwong  阅读(2343)  评论(0编辑  收藏  举报

导航