使用SubWCRev命令将SVN版本号自动设置到vs软件版本中

发布时间 2023-06-12 10:20:50作者: Jianrung

背景

在软件开发过程中,每次对一个软件产品的release,都要处理该软件版本号。
有的版本号是人为定的,有些是自动生成的,本文介绍在使用SVN版本管理软件的情况下,利用SVN的SubWCRev命令来自动生成对应svn修改版本的版本号,这样便于快速找到对应二进制的编译时的SVN版本号。

操作步骤

1. 首先创建一个需要文件版本信息的模板(svnTemplate.h)。

//svnTemplate.h头文件
#ifndef __SVN_TEMPLATE_H__
#define __SVN_TEMPLATE_H__

//工作副本中最高提交版本
#define SVN_REVISION "$WCREV$"

//工作副本中最高提交版本对应的提交时间,格式为yyyy/MM/dd hh:mm:ss
#define SVN_DATE_TIME "$WCDATE$"

//系统当前时间,格式为yyyy/MM/dd hh:mm:ss
#define SYS_TIME_NOW "$WCNOW$"

#endif

2. 然后开始使用subwcrev.exe此命令,格式如下,

SubWCRev WorkingCopyPath [SrcVersionFile DstVersionFile] [-nmdfe]

具体命令参数及内容,可以参考原版地址
第 6 章 SubWCRev 程序

为了方便添加到vs的项目属性中,可以创建一个bat脚本(setsvnversion.bat)和工程配置文件(.vcproj/.vcxproj)同级。

::setsvnversion.bat
SubWCRev.exe .\ ".\include\svnTemplate.h" ".\include\svnVersion.h"

svnTemplate.h文件放在了工程目录下的include路径下,subwcrev会获取SVN的工程提交版本号,替换此文件内的变量;
然后使用svnTemplate.h文件替换工程使用文件svnVersion.h。

3. 将脚本添加到VS工程属性当中

选择工程项目->鼠标右键->属性

预生成事件中,将命令行添加上此bat的名字;(也可以在这直接写SubWCRev.exe .\ ".\include\svnTemplate.h" ".\include\svnVersion.h")
设置完成,点击确定。

4. 在需要替换版本号的地方使用SVN_REVISION宏进行替换。