用svn管理软件版本信息
来源:互联网 发布:app下载不了软件 编辑:程序博客网 时间:2024/04/27 14:38
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想回溯查看是就能根据版本号调出对应的历史代码
- 用svn管理软件版本信息
- svn(subversion) 版本管理软件
- SVN 代码版本管理软件
- SVN版本管理软件的配置与安装
- 使用SVN管理软件版本,解决协作问题
- 源代码版本管理软件cvs 与 svn选择
- svn版本管理软件——初始化配置
- 删除SVN版本信息
- 删除SVN版本信息
- 删除svn版本信息
- svn版本管理软件——创建svn私人仓库
- svn版本管理软件——svn日常管理代码
- svn版本管理软件——svn分支管理
- svn版本管理软件——svn发布补丁和打补丁
- svn版本信息的删除
- 删除SVN版本信息 .svn文件夹
- Mac最好用的SVN管理软件Cornerstone303
- 使用SVN项目管理软件
- WinMain函数参数介绍
- Ada and Cycle+bfs+邻接表
- ProgressBar控件和 TrackBar控件
- adv167 快乐司机
- HDU 4725 The Shortest Path in Nya Graph
- 用svn管理软件版本信息
- 奇技淫巧:在spring官网上下载历史版本的spring插件,springsource-tool-suite
- 生成keystore文件
- 计蒜客模拟题5-引爆炸弹--并查集
- Canvas 和 SVG 的区别
- 2017-04-04 水题信心 02Mato 的文件管理
- 我的脚本库
- 第七届蓝桥杯大赛个人赛省赛(软件类)A组第一题 网友年龄
- Exception in thread "main" java.lang.NullPointerException java报空指针异常