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




       

  • 相关阅读:
    C++ 获取图片文件信息
    java中redis的分布式锁工具类
    java中的redis工具类
    mysql中的sql查询优化
    利用Linux中的crontab实现分布式项目定时任务
    MYSQL的REPLACE和ON DUPLICATE KEY UPDATE使用
    redis学习三,Redis主从复制和哨兵模式
    redis学习五,redis集群搭建及添加主从节点
    String 转化成java.sql.Date和java.sql.Time
    SpringMVC配置双数据源,一个java项目同时连接两个数据库
  • 原文地址:https://www.cnblogs.com/sun-frederick/p/5358496.html
Copyright © 2020-2023  润新知