工具——代码中自动生成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  




   

原文地址:https://www.cnblogs.com/sun-frederick/p/5358496.html