本節和你們討論一下程序集版本最後一位使用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