在VS2013以及Linux系统中利用SVN自动更新版本号
2016-11-17 14:02
519 查看
1、在VS2013中利用SVN自动更新版本号
(1)、方法一:利用subwcrev.exe中的宏:$WCREV$ : 获取SVN的版本号 $WCURL$ : 获取SVN的地址关于subwcrev.exe参见: http://tortoisesvn.net/docs/nightly/TortoiseSVN_zh_CN/tsvn-subwcrev.html http://tortoisesvn.net/docs/nightly/TortoiseSVN_zh_CN/tsvn-subwcrev-keywords.html
subwcrev.exe基本格式是:
SubWCRev WorkingCopyPath [SrcVersionFile DstVersionFile] [-nmdfe]
所以需要在VS对应的工程中新建两个文件,一个是SrcVersionFile和DstVersionFile,其中:
WorkingCopyPath #工程所在的目录 SrcVersionFile #含有SubWCRev.exe程序可以替换的宏; DstVersionFile #为更新svn之后把宏替换掉以后的目标文件。
例如:
SrcVersionFile为一个头文件,名字叫Template.Source.Version.h,其内容如下:
#pragma once #define VER_UMS_HQ_MAJOR 2 #define VER_UMS_HQ_MINOR 2 #define VER_UMS_HQ_SVN $WCREV$ #define VER_UMS_HQ_REVISION "2.2.$WCREV$.0"DstVersionFile文件为另外一个头文件,名字叫Source.Version.h,其内容如下:
#pragma once #define VER_UMS_HQ_MAJOR 2 #define VER_UMS_HQ_MINOR 2 #define VER_UMS_HQ_SVN 8465 #define VER_UMS_HQ_REVISION "2.2.8465.0"然后在工程属性设置:
Build Event选项->Pre-Build Event的Command Line中输入:
subwcrev.exe “./” “./Template.Source.Version.h” “./Source.Version.h”这样每次用svn更新代码时,svn的项目版本号也更新下来了,并最重替换掉 Template.Source.Version.h中宏WCREV,生成Source.Version.h中的内容。最后在其它文件中就可以使用这个VER_UMS_HQ_REVISION的定义了,例如在程序版本号中使用:
VS_VERSION_INFO VERSIONINFO FILEVERSION VER_UMS_HQ_MAJOR,VER_UMS_HQ_MINOR,VER_UMS_HQ_SVN,0 PRODUCTVERSION VER_UMS_HQ_MAJOR,VER_UMS_HQ_MINOR,VER_UMS_HQ_SVN,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x4L FILETYPE 0x2L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904e4" BEGIN VALUE "CompanyName", "Zealink.Com" VALUE "FileDescription", "Zealink.UMSHQ" VALUE "FileVersion", VER_UMS_HQ_REVISION VALUE "InternalName", "Zealink.UMS.HQ.dll" VALUE "LegalCopyright", "Zealink.Com All rights reserved." VALUE "OriginalFilename", "Zealink.UMS.HQ.dll" VALUE "ProductName", "UMS" VALUE "ProductVersion", VER_UMS_HQ_REVISION END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x409, 1252 END END
(2)、方法二:利用资源文件
1>、以代码方式打开XXX.rc
2>、修改:
FILEVERSION 1, 0, 0, 1 PRODUCTVERSION 1, 0, 0, 1为:
FILEVERSION 1, 0, 0, $WCREV$ PRODUCTVERSION 1, 0, 0, $WCREV$3>、修改:
VALUE "FileVersion", "1.0.0.1" VALUE "ProductVersion", "1.0.0.1"为:
VALUE "FileVersion", "1.0.0.$WCREV$" VALUE "ProductVersion", "1.0.0.$WCREV$"4>、打开项目属性->生成事件->预先生成事件->命令行
添加:
copy $(ProjectDir)$(ProjectName).rc $(ProjectDir)_$(ProjectName).rc /y subwcrev . $(Projectdir)$(ProjectName).rc $(Projectdir)$(ProjectName).rc项目属性->生成事件->后期生成事件->命令行
copy $(ProjectDir)_$(ProjectName).rc $(ProjectDir)$(ProjectName).rc /y编译后,build自动更新为SVN最后提交版本
参考网址:http://blog.csdn.net/xuly_29/article/details/50623103
参考网址:http://blog.csdn.net/analogous_love/article/details/47293509
2、在Makefile中定义一个变量
REV=`svn info | grep Revision | awk '{print $2}'` #或者 REV=`svn info | grep Revision | cut -d " " -f 2` REV=`svnversion ../../`而后在编译命令行中加入宏
-DREV=$(REV)
使用命令:
svn info |grep Revision: |awk '{print $2}
参考网址:https://stackoverflow.com/questions/1991526/current-subversion-revision-command
参考网址:http://www.runoob.com/linux/linux-comm-awk.html
相关文章推荐
- 在VS2013中利用SVN自动更新版本号
- ANT发布SVN WEB项目到TOMCAT以及利用post-commit自动提交编译更新
- ANT发布SVN WEB项目到TOMCAT以及利用post-commit自动提交编译更新
- linux下SVN配置实现项目目录自动更新以及源码安装
- 利用Yum自动更新Linux系统效劳器的措施
- linux下SVN配置实现项目目录自动更新以及源码安装的操作方法
- Linux配置svn,测试了,好用,但是还没有钩子自动更新的那部分,有点遗憾
- 利用SVN实现版本号的自动增加
- 让svn自动更新代码注释中的版本号
- linux下利用U盘自动更新程序
- 让SVN自动更新代码中的版本号
- 让SVN自动更新代码注释中的版本号
- 利用SVN实现自动版本号生成
- Linux下SVN自动更新web
- 让svn自动更新代码注释中的版本号
- 原来利用SVN的钩子函数可以实现自动的版本更新管理
- Linux下SVN自动更新web [转]
- svn客户端代码版本号自动更新 依赖Lua
- 让SVN自动更新代码注释中的版本号
- Java自动更新SVN程序,注意系统默认的忽略文件