用svn管理软件版本信息

简介: svn服务提供了一些宏定义,大多与版本管理相关的环境变量,通过SubWCRev可以将这些宏信息取值用于我们的产品版本信息里本人示例代码中采用的是在redhat6.5中安装subversion服务,在win安装svn客户端TortoiseSVN。

svn服务提供了一些宏定义,大多与版本管理相关的环境变量,通过SubWCRev可以将这些宏信息取值用于我们的产品版本信息里

本人示例代码中采用的是在redhat6.5中安装subversion服务,在win安装svn客户端TortoiseSVN。

首先创建一个文件org_version.h(如下),并将该文件add及提交到svn服务上:

#pragma once
//svn取值
#define VERSION_BUILD_NUMBER $WCREV$
#define STR_BUILD_NUMBER "$WCREV$"
#define STR_VERSION_BUILD "(B$WCREV$ $WCNOW$)"
#define STR_VERSION_DATE "$WCDATE$"
#define STR_VERSION_URL "$WCURL$"
#define STR_VERSION_NOW "$WCNOW$"
#define NSTR_VERSION_NOW $WCNOW$
//自定义
#define STR_VERSION_VERSION    "V1.2.$WCREV$"
#define STR_VERSION_COMPANY    "*** company"
#define STR_VERSION_FILEDESC    "you file desc"
#define STR_VERSION_FILEVER    STR_VERSION_VERSION
#define STR_VERSION_LEGAL    "*** All rights reserved"
#define STR_VERSION_PRODUCTNAME    "you software name"
#define STR_VERSION_TELE    "+86 tel"
#define STR_VERSION_FAX        "+86 fax"    
#define STR_VERSION_WEB        "www.youweb.com"
#define STR_VERSION_POSTCODE    "post code"
#define STR_VERSION_ADDRESS    "address"

文件中带$ 的是需要从svn服务取值的宏

win+R启动命令窗口,cd到所在目录通过SubWCRev(目录  源文件  目标文件)命令,如

SubWCRev  ./   version.h__   version.h(当然实际工作中可以将该命令配置在工程文件[例如makefile或vs代码文件的命令选项]中在编译时自行调用)

将在源文件所在目录生成一个目标文件version.h,

#pragma once
//svn取值
#define VERSION_BUILD_NUMBER 5
#define STR_BUILD_NUMBER "5"
#define STR_VERSION_BUILD "(B5 2017/04/04 21:18:43)"
#define STR_VERSION_DATE "2017/04/04 21:18:39"
#define STR_VERSION_URL "svn://192.168.163.128/common/muparser"
#define STR_VERSION_NOW "2017/04/04 21:18:43"
#define NSTR_VERSION_NOW 2017/04/04 21:18:43
//自定义
#define STR_VERSION_VERSION    "V1.2.5"
#define STR_VERSION_COMPANY    "*** company"
#define STR_VERSION_FILEDESC    "you file desc"
#define STR_VERSION_FILEVER    STR_VERSION_VERSION
#define STR_VERSION_LEGAL    "*** All rights reserved"
#define STR_VERSION_PRODUCTNAME    "you software name"
#define STR_VERSION_TELE    "+86 tel"
#define STR_VERSION_FAX        "+86 fax"    
#define STR_VERSION_WEB        "www.youweb.com"
#define STR_VERSION_POSTCODE    "post code"
#define STR_VERSION_ADDRESS    "address"

我们就可以在工程中引用该文件,取得我们需要的信息对软件产品进行描述,例如我们可以在代码中引用这些信息表明产品的版本,生产日期等等

也可以加入资源文件中进行描述,例如.rc文件,看下面的示列:

#if defined(UNDER_CE)
#include <winbase.h>
#else
#include <winver.h>
#endif

#include "version.h"
/////////////////////////////////////////////////////////////////////////////
//
// Version
//

VS_VERSION_INFO VERSIONINFO
FILEVERSION 3,2,2,VERSION_BUILD_NUMBER
PRODUCTVERSION 3,2,2,VERSION_BUILD_NUMBER
FILEFLAGSMASK 0x17L
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "080404b0"
        BEGIN
            VALUE "CompanyName",         STR_VERSION_COMPANY
            VALUE "FileDescription",     STR_VERSION_FILEDESC
            VALUE "FileVersion",         STR_BUILD_NUMBER
            VALUE "InternalName",         STR_VERSION_PRODUCTNAME
            VALUE "LegalCopyright",     STR_VERSION_LEGAL
            VALUE "OriginalFilename",     STR_VERSION_PRODUCTNAME
            VALUE "ProductName",         STR_VERSION_PRODUCTNAME
            VALUE "ProductVersion",     STR_VERSION_VERSION
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x804, 1200
    END
END
//////////////////////////////////
//ico
IDI_ICON1           ICON   DISCARDABLE   "iconApp.ico"

这样就不用生成及发布软件是自己修改资源文件

当软件出现bug想回溯查看是就能根据版本号调出对应的历史代码



目录
相关文章
|
Linux 开发工具
Linux配置软件仓库
Linux配置软件仓库。配置光盘内容为yum/dnf命令的软件仓库。
1253 0
|
存储 Android开发 数据安全/隐私保护
版本控制软件SVN
版本控制软件SVN的使用流程介绍
|
数据可视化 Java Linux
Linux搭建SVN(CollabNet Subversion)服务器 可视化界面
最近一程序员友人给了我这样一个页面,顿时感觉SVN也可以这样管理的高大上,尽管svn已经不像当年如此风光,但是还有很多公司在使用它。所以也是出于感兴趣就尝试着安装了一下,还算是比较顺利的,但是中间也踩了不少坑。(注意一定要非root用户安装和启动)一、安装环境安装CollabNet Subversion之前必须先安装JDK1.6以上和python2.4 ~ 2.6。 #查看java版本
3863 1
|
Shell 网络安全 数据安全/隐私保护
借助URLOS快速安装subversion服务
环境需求 最低硬件配置:1核CPU,1G内存(1+1)提示:如果你的应用较多,而主机节点的硬件配置较低,建议在部署节点时开通虚拟虚拟内存; 生产环境建议使用2G或以上内存; 推荐安装系统:Ubuntu-16.
911 0
|
Web App开发 测试技术 Apache
下一篇
无影云桌面