本節和大家討論一下程序集版本最后一位使用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