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

 




   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM