工具——代碼中自動生成SVN版本號


本節和你們討論一下程序集版本最後一位使用SVN版本號的自動生成方法,這裏就向你們簡單介紹一下。
在進行自動部署的時候,常常須要用腳本獲取程序的最新版本號。如今咱們定義每一個程序集的版本信息的最末段表示SVN的源碼版本。
詳細定義以下:
    程序集版本號分爲4段,例如1.0.4.23。
    第一段爲主版本號,項目一但啓動則不會更改。
    第二段爲次版本號,在項目功能作較大調整時增長,增量爲1。
    第三段爲修訂版本號,一般在解決缺陷或者細微功能變化時增長,增量爲1或者2。該版本號分奇數和偶數兩種。奇數表示測試版本,偶數表示穩定版本。
    第四段爲SVN源碼版本號,該版本號經過腳本自動生成。

使用腳本自動生成SVN版本號的先決條件:
    安裝TortoiseSVN;
    源代碼在SVN版本管理控制之下。

1, 經過cmake腳本 檢查 SVN 並獲取SVN version                                shell

 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版本號 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  
相關文章
相關標籤/搜索