SVN获取版本号
version_template.h
#ifndef _VERSION_H_
#define _VERSION_H_
#define VER_MAJOR 1
#define VER_MINOR 0
#define VER_REVISION $WCREV$
#define SVN_REVISION"$WCMIXED?$WCRANGE$:$WCREV$$"
#define SVN_RANGE $WCRANGE$
#define SVN_REV $WCREV$
#define SVN_REVISION"$WCMIXED?SVN_RANGE:SVN_REV$"
#endif //!_VERSION_H_
// Test file for SubWCRev
char *Revision = "$WCREV$";
char *Revision16= "$WCREV&0xFF$";
char *Revisionp100 = "$WCREV+100$";
char *Revisionm100 = "$WCREV-100$";
char *Modified = "$WCMODS?Modified:Not modified$";
char *Unversioned = "$WCUNVER?Unversioned items found:no unversioned items$";
char *Date = "$WCDATE$";
char *CustDate = "$WCDATE=%a, %d %B %Y$";
char *DateUTC = "$WCDATEUTC$";
char *CustDateUTC = "$WCDATEUTC=%a, %d %B %Y$";
char *TimeNow = "$WCNOW$";
char *TimeNowUTC= "$WCNOWUTC$";
char *RevRange = "$WCRANGE$";
char *Mixed = "$WCMIXED?Mixed revision WC:Not mixed$";
char *ExtAllFixed = "$WCEXTALLFIXED?All externals fixed:Not all externals fixed$";
char *IsTagged = "$WCISTAGGED?Tagged:Not tagged$";
char *URL = "$WCURL$";
char *isInSVN = "$WCINSVN?versioned:not versioned$";
char *needslck = "$WCNEEDSLOCK?TRUE:FALSE$";
char *islocked = "$WCISLOCKED?locked:not locked$";
char *lockdateutc = "$WCLOCKDATEUTC$";
char *lockdate = "$WCLOCKDATE$";
char *lockcustutc = "$WCLOCKDATEUTC=%a, %d %B %Y$";
char *lockcust = "$WCLOCKDATE=%a, %d %B %Y$";
char *lockown = "$WCLOCKOWNER$";
char *lockcmt = "$WCLOCKCOMMENT$";
#if $WCMODS?1:0$
#error Source is modified
#endif
// End of file
运行bat
setlocal
::设置svn客户端安装目录
set SVN_PATH=D:\Program Files\TortoiseSVN\bin
::设置工作目录,即工程目录
set WORK_DIR=E:\code\C++\Demo
::设置版本模版文件,对应第一步中新建的模板文件
set VERSION_TEMPLATE=E:\code\C++\Demo\version_template.h
::设置版本号生成文件,生成的文件就是我们需要使用的版本文件
set VERSION_RELEASE=E:\code\C++\Demo\version.h
::进入svn客户端安装目录
cd %SVN_PATH%
::执行更新版本号操作
"%SVN_PATH%\SubWCRev.exe" "%WORK_DIR%" "%VERSION_TEMPLATE%" "%VERSION_RELEASE%"
endlocal
生成version.h
#ifndef _VERSION_H_
#define _VERSION_H_
#define VER_MAJOR 1
#define VER_MINOR 0
#define VER_REVISION 6185
#define SVN_REVISION"4620"
#define SVN_RANGE 4620:6185
#define SVN_REV 6185
#define SVN_REVISION"SVN_RANGE"
#endif //!_VERSION_H_
// Test file for SubWCRev
char *Revision = "6185";
char *Revision16= "41";
char *Revisionp100 = "6285";
char *Revisionm100 = "6085";
char *Modified = "Modified";
char *Unversioned = "Unversioned items found";
char *Date = "2018/02/07 10:00:58";
char *CustDate = "Wed, 07 February 2018";
char *DateUTC = "2018/02/07 02:00:58";
char *CustDateUTC = "Wed, 07 February 2018";
char *TimeNow = "2018/02/08 14:56:08";
char *TimeNowUTC= "2018/02/08 06:56:08";
char *RevRange = "4620:6185";
char *Mixed = "Mixed revision WC";
char *ExtAllFixed = "All externals fixed";
char *IsTagged = "Not tagged";
char *URL = "http://xxx";
char *isInSVN = "versioned";
char *needslck = "FALSE";
char *islocked = "not locked";
char *lockdateutc = "1970/01/01 00:00:00";
char *lockdate = "1970/01/01 08: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
$WCDATE=%a, %d %B %Y$-strftime
命令
在VS2005的项目属性页->预生成事件->命令行中添加一句:
$(SolutionDir)\subwcrev.exe $(SolutionDir) $(SolutionDir)\src\qmlv\version_template.h $(SolutionDir)\src\qmlv\version.h
SubWCRev 调用语法:
SubWCRev WorkingCopyPath [SrcVersionFile DstVersionFile]
svn版本日志
添加svn.exe目录到环境变量中
Apache-Subversion-1.9.7:
"svn.exe" log --incremental -r4620
"svn.exe" log --incremental -r4522
显示当前工作副本的最新5条日志消息
每次提交中更改的目录和显示路径:
svn log -l 5 -v
更新readme.bat
svn update %~dp0..\
svn log -l 1 %~dp0..\ > %~dp0readme.txt
svn连接可指定用户名与密码
svn co URL --username xxx --password xxx
参考:
https://tortoisesvn.net/docs/nightly/TortoiseSVN_zh_CN/tsvn-subwcrev-keywords.html
http://blog.sina.com.cn/s/blog_75c9af020102vgh2.html
https://jingyan.baidu.com/article/ae97a646833b87bbfd461d0d.html
http://blog.csdn.net/yangxiao2shi/article/details/50719286/