本节和大家讨论一下程序集版本最后一位使用SVN版本号的自动生成方法,这里就向大家简单介绍一下。
在进行自动部署的时候,经常需要用脚本获取程序的最新版本号。现在我们定义每个程序集的版本信息的最末段表示SVN的源码版本。
详细定义如下:
    程序集版本号分为4段,例如1.0.4.23。
    第一段为主版本号,项目一但启动则不会更改。
    第二段为次版本号,在项目功能做较大调整时增加,增量为1。
    第三段为修订版本号,通常在解决缺陷或者细微功能变化时增加,增量为1或者2。该版本号分奇数和偶数两种。奇数表示测试版本,偶数表示稳定版本。
    第四段为SVN源码版本号,该版本号通过脚本自动生成。

使用脚本自动生成SVN版本号的先决条件:
    安装TortoiseSVN;
    源代码在SVN版本管理控制之下。

1, 通过cmake脚本 检查 SVN 并获取SVN version

 IF (EXISTS "${PROJECT_SOURCE_DIR}/.svn/")             ## when SVN version >= 1.8, maybe getting subversion failed.
include(FindSubversion)
FIND_PACKAGE(Subversion)
IF (Subversion_FOUND)
Subversion_WC_INFO(${CMAKE_CURRENT_LIST_DIR} hamsterStore)
ELSE (Subversion_FOUND)
MESSAGE (FATAL_ERROR "Subversion not found.")
ENDIF (Subversion_FOUND)
ELSE (EXISTS "${PROJECT_SOURCE_DIR}/.svn/")
MESSAGE (STATUS "Subversion is not found.")
ENDIF (EXISTS "${PROJECT_SOURCE_DIR}/.svn/") IF(${hamsterStore_WC_REVISION})
set (CONFIG_Get_Revision ${hamsterStore_WC_REVISION} CACHE STRING "software revision")
MESSAGE (STATUS "CONFIG_Get_Revision from Subversion.")
ELSE(${hamsterStore_WC_REVISION})
set (CONFIG_Get_Revision "" CACHE STRING "software revision")
MESSAGE (STATUS "CONFIG_Get_Revision set is 12345.")
ENDIF(${hamsterStore_WC_REVISION})

以上hamsterStore是Project Name; CONFIG_Get_Revision即是获取到的svn版本号;

2, 用shell脚本获取svn版本号

     `svnversion -c |sed 's/^.*://' |sed 's/[A-Z]*$//'`
或者
# 获取XML版本的svn信息,这样可以避免不同语言的问题
svnv=`svnversion -c |sed 's/^.*://' |sed 's/[A-Z]*$//'`
echo $svnv 安卓系统下:
svnv=`svnversion |sed 's/^.*://' |sed 's/[A-Z]*$//'`
echo $svnv
sed -i s/versionName=".∗build−[0-9]*"/versionName="\1$svnv"/ AndroidManifest.xml
cat AndroidManifest.xml |grep versionName

工具——代码中自动生成SVN版本号的更多相关文章

  1. 在C++程序中自动加入svn版本号

    原创文章,欢迎阅读,如果您想转载,请在第一行醒目注明原作者和原始链接. 为了方便追查和确认软件bug等问题,给软件或者库赋予版本号是个好办法. 最简单的版本号管理是记录编译时间: cout<&l ...

  2. spring boot 发布自动生成svn版本号

    通过Jenkins构建发布spring boot项目时,常常有需求,需要把Svn的版本号更新到项目的版本上,通过有两种解决方案: 1. 通过shell命令对配置文件中的指定字符进行替换, 如: 配置文 ...

  3. c++代码中,使用svn版本号作为程序版本号的实现方法

    1.编写版本模板文件 #ifndef _VERSIONSVN_H_#define _VERSIONSVN_H_#define VER_REVISIONSVN $WCREV$#endif //!_VER ...

  4. 去掉代码中自动生成的TODO Auto-generated method stub

    Window --> Preferences -->Java -->Code Style -->Code Templates--> Code --> Method ...

  5. 懒人小工具:T4自动生成Model,Insert,Select,Delete以及导出Excel的方法

    之前写了篇文章,懒人小工具:[自动生成Model,Insert,Select,Delete以及导出Excel的方法](http://www.jianshu.com/p/d5b11589174a),但是 ...

  6. 试试使用 eolinker 扫描 GitLab 代码注释自动生成 API 文档?

    前言: 一般写完代码之后,还要将各类参数注解写入API文档,方便后续进行对接和测试,这个过程通常都很麻烦,如果有工具可以读取代码注释直接生成API文档的话,那会十分方便. 此前一直都是在使用eolin ...

  7. 在PowerDesigner中自动生成sqlserver字段备注

    在PowerDesigner中自动生成sqlserver字段备注 PowerDesigner是数据库设计人员常用的设计工具,但其自生默认生成的代码并不会生成sqlserver数据库的字段备注说明.在生 ...

  8. 在 Linux 中自动生成 Cordova/Phonegap for Android 的 APK 安装程序

    在 Linux 中自动生成 Cordova/Phonegap for Android 的 APK 安装程序 本贴首发于: http://xuekaiyuan.com/forum.php?mod=vie ...

  9. eclipse中自动生成注释

    eclipse中自动生成注释 包前缀设置的地方 注释模板设置的地方 Eclipse自动生成方法注释 快捷键 自动生成方法的注释格式,例如 /*** @param str* @return* @thro ...

随机推荐

  1. ionic 做移动应用怎么样?

    看了很多网上的赞美性介绍后,我们选用了这个做开发,目前碰到的坑有: android, list界面上下滑动会lag ios下,当键盘弹出时,你可以选择整个页面scroll,也可以选择不scroll,但 ...

  2. A*与IDA*的奇妙之旅

    因为A*卡了一天QAQ 那么,A*是什么呢? A* A*是对于bfs的优化,启发式搜索. 例如下图: 不错,在这张图上,小人去找电脑,用bfs的话: 黄色就是bfs的搜索范围...不要问我为什么选黄色 ...

  3. R语言学习笔记(二十):stringr包中函数介绍(表格)

    stringr包中的重要函数 函数 功能说明 R Base中对应函数 使用正则表达式的函数 str_extract() 提取首个匹配模式的字符 regmatches() str_extract_all ...

  4. 按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示: 学生ID,,数据库,企业管理,英语,有效课程数,有效平均分

    SELECT S# as 学生ID ,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='004') AS 数据库 ,(SELECT score FROM S ...

  5. python2.7入门---字典(Dictionary)

        这次咱们记录的是python中的字典这个鬼,首先我们得了解,字典是另一种可变容器模型,且可存储任意类型对象.字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 ...

  6. 3 python3 编码解码问题 upd接受数据

    1.python3下的中文乱码:send_data.encode("utf-8") from socket import * udp_socket = socket(AF_INET ...

  7. linux shell中读写操作mysql数据库

    本文介绍了如何在shell中读写mysql数据库.主要介绍了如何在shell 中连接mysql数据库,如何在shell中创建数据库,创建表,插入csv文件,读取mysql数据库,导出mysql数据库为 ...

  8. 如何激活win10

    第一步:用管理员权限打开命令提示符: 第二步:输入命令---slmgr.vbs /upk                          (成功卸载了产品密钥) 第三步:slmgr /ipk NPP ...

  9. CWindowWnd类源码分析

    CWindowWnd代码在UIBase.h和UIBase.cpp文件里.主要实现的是一个基本窗口的创建与消息处理. 相关代码: 头文件: class UILIB_API CWindowWnd { pu ...

  10. win10子系统Ubuntu18.04下安装图形界面

    前提:windows 10 已经安装WSL(windows subsystem for linux),并能正确运行Bash. 要想使用Linux的图形用户界面通常有两种方法,一种是使用X-Window ...