在软件开发过程中,每次对一个软件产品的release,都要处理该软件版本号。有的版本号是人为定的,有些是自动生成的,本文介绍在使用SVN版本管理软件的情况下,利用SVN的一个命令来自动生成对应svn修改版本的版本号。
所以前提是你的开发机需要确认安装了SVN的客户端,并且你本机的代码是SVN上down下来的,也就是代码需要是一个working copy。
官方给出解释:
https://tortoisesvn.net/docs/nightly/TortoiseSVN_zh_CN/tsvn-subwcrev.html
列出可用的命令行开关
可用关键字列表
After running SubWCRev.exe path\to\workingcopy testfile.tmpl testfile.txt, the output file testfile.txt would looks like this:
// Test file for SubWCRev char *Revision = "22837"; char *Revision16 = "53"; char *Revisionp100 = "22937"; char *Revisionm100 = "22737"; char *Modified = "Modified"; char *Unversioned = "no unversioned items"; char *Date = "2012/04/26 18:47:57"; char *CustDate = "Thu, 26 April 2012"; char *DateUTC = "2012/04/26 16:47:57"; char *CustDateUTC = "Thu, 26 April 2012"; char *TimeNow = "2012/04/26 20:51:17"; char *TimeNowUTC = "2012/04/26 18:51:17"; char *RevRange = "22836:22837"; char *Mixed = "Mixed revision WC"; char *ExtAllFixed = "All externals fixed"; char *IsTagged = "Not tagged"; char *URL = "https://svn.code.sf.net/p/tortoisesvn/code/trunk"; char *isInSVN = "versioned"; char *needslck = "FALSE"; char *islocked = "not locked"; char *lockdateutc = "1970/01/01 00:00:00"; char *lockdate = "1970/01/01 01:00:00"; char *lockcustutc = "Thu, 01 January 1970"; char *lockcust = "Thu, 01 January 1970"; char *lockown = ""; char *lockcmt = ""; #if 1 #error Source is modified #endif // End of file我做的列子:
SubWCRev.exe 软件路径:
C:\Program Files\TortoiseSVN\bin\SubWCRev.exe
我的SVN安装目录是:C:\Program Files\TortoiseSVN,
建立处理文件如 SystemCommon.h:
#define SW_VERSION_L_ ((1.0.+$WCREV+1$)
制作Bat文件,在程序编译之前处理:
"C:\Program Files\TortoiseSVN\bin\SubWCRev.exe" "../../../" "../../document/SystemCommon.h" "../../common/SystemCommon/SystemCommon.h"