工具——代码中自动生成SVN版本号
本节和大家讨论一下程序集版本最后一位使用SVN版本号的自动生成方法,这里就向大家简单介绍一下。
在进行自动部署的时候,经常需要用脚本获取程序的最新版本号。现在我们定义每个程序集的版本信息的最末段表示SVN的源码版本。
详细定义如下:
程序集版本号分为4段,例如1.0.4.23。
第一段为主版本号,项目一但启动则不会更改。
第二段为次版本号,在项目功能做较大调整时增加,增量为1。
第三段为修订版本号,通常在解决缺陷或者细微功能变化时增加,增量为1或者2。该版本号分奇数和偶数两种。奇数表示测试版本,偶数表示稳定版本。
第四段为SVN源码版本号,该版本号通过脚本自动生成。
使用脚本自动生成SVN版本号的先决条件:
安装TortoiseSVN;
源代码在SVN版本管理控制之下。
1, 通过cmake脚本 检查 SVN 并获取SVN version
1 IF (EXISTS "${PROJECT_SOURCE_DIR}/.svn/") ## when SVN version >= 1.8, maybe getting subversion failed. 2 include(FindSubversion) 3 FIND_PACKAGE(Subversion) 4 IF (Subversion_FOUND) 5 Subversion_WC_INFO(${CMAKE_CURRENT_LIST_DIR} hamsterStore) 6 ELSE (Subversion_FOUND) 7 MESSAGE (FATAL_ERROR "Subversion not found.") 8 ENDIF (Subversion_FOUND) 9 ELSE (EXISTS "${PROJECT_SOURCE_DIR}/.svn/") 10 MESSAGE (STATUS "Subversion is not found.") 11 ENDIF (EXISTS "${PROJECT_SOURCE_DIR}/.svn/") 12 13 IF(${hamsterStore_WC_REVISION}) 14 set (CONFIG_Get_Revision ${hamsterStore_WC_REVISION} CACHE STRING "software revision") 15 MESSAGE (STATUS "CONFIG_Get_Revision from Subversion.") 16 ELSE(${hamsterStore_WC_REVISION}) 17 set (CONFIG_Get_Revision "12345" CACHE STRING "software revision") 18 MESSAGE (STATUS "CONFIG_Get_Revision set is 12345.") 19 ENDIF(${hamsterStore_WC_REVISION})
以上hamsterStore是Project Name; CONFIG_Get_Revision即是获取到的svn版本号;
2, 用shell脚本获取svn版本号
1 `svnversion -c |sed 's/^.*://' |sed 's/[A-Z]*$//'` 2 或者 3 # 获取XML版本的svn信息,这样可以避免不同语言的问题 4 svnv=`svnversion -c |sed 's/^.*://' |sed 's/[A-Z]*$//'` 5 echo $svnv 6 7 安卓系统下: 8 svnv=`svnversion |sed 's/^.*://' |sed 's/[A-Z]*$//'` 9 echo $svnv 10 sed -i s/versionName=".∗build−[0-9]*"/versionName="\1$svnv"/ AndroidManifest.xml 11 cat AndroidManifest.xml |grep versionName