工具——代码中自动生成SVN版本号
本节和大家讨论一下程序集版本最后一位使用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版本号的更多相关文章
- 在C++程序中自动加入svn版本号
原创文章,欢迎阅读,如果您想转载,请在第一行醒目注明原作者和原始链接. 为了方便追查和确认软件bug等问题,给软件或者库赋予版本号是个好办法. 最简单的版本号管理是记录编译时间: cout<&l ...
- spring boot 发布自动生成svn版本号
通过Jenkins构建发布spring boot项目时,常常有需求,需要把Svn的版本号更新到项目的版本上,通过有两种解决方案: 1. 通过shell命令对配置文件中的指定字符进行替换, 如: 配置文 ...
- c++代码中,使用svn版本号作为程序版本号的实现方法
1.编写版本模板文件 #ifndef _VERSIONSVN_H_#define _VERSIONSVN_H_#define VER_REVISIONSVN $WCREV$#endif //!_VER ...
- 去掉代码中自动生成的TODO Auto-generated method stub
Window --> Preferences -->Java -->Code Style -->Code Templates--> Code --> Method ...
- 懒人小工具:T4自动生成Model,Insert,Select,Delete以及导出Excel的方法
之前写了篇文章,懒人小工具:[自动生成Model,Insert,Select,Delete以及导出Excel的方法](http://www.jianshu.com/p/d5b11589174a),但是 ...
- 试试使用 eolinker 扫描 GitLab 代码注释自动生成 API 文档?
前言: 一般写完代码之后,还要将各类参数注解写入API文档,方便后续进行对接和测试,这个过程通常都很麻烦,如果有工具可以读取代码注释直接生成API文档的话,那会十分方便. 此前一直都是在使用eolin ...
- 在PowerDesigner中自动生成sqlserver字段备注
在PowerDesigner中自动生成sqlserver字段备注 PowerDesigner是数据库设计人员常用的设计工具,但其自生默认生成的代码并不会生成sqlserver数据库的字段备注说明.在生 ...
- 在 Linux 中自动生成 Cordova/Phonegap for Android 的 APK 安装程序
在 Linux 中自动生成 Cordova/Phonegap for Android 的 APK 安装程序 本贴首发于: http://xuekaiyuan.com/forum.php?mod=vie ...
- eclipse中自动生成注释
eclipse中自动生成注释 包前缀设置的地方 注释模板设置的地方 Eclipse自动生成方法注释 快捷键 自动生成方法的注释格式,例如 /*** @param str* @return* @thro ...
随机推荐
- python 面向对象 (多态)
什么是多态?多态就像是人有多种心情,场景不一样心情就会不一样. class Dog: def print_self(self): print('this is dog') class Hsq(Dog) ...
- spoj1026 favorite dice
#include <bits/stdc++.h> using namespace std; int n,t; ; double dp[N]; /* 甩一个n面的骰子,问每一面都被甩到的需要 ...
- linux io 学习笔记(03)---共享内存,信号灯,消息队列
system V IPC 1)消息队列 2)共享内存 3)信号灯(信号量集) 1.消息队列. ipcs -q 查看系统中使用消息队列的情况 ipcrm -q +msqid 删除消息队列 消息队列工作原 ...
- WPF中的数据模板(DataTemplate)
原文:WPF中的数据模板(DataTemplate) WPF中的数据模板(DataTemplate) ...
- c++实验3类和对象
实 验 3: part 1:验证 part 2:graph #include <iostream> #include "graph.h" using namespac ...
- torndb在python3中运用
#连接数据库:db = torndb.Connect() #查询一条的数据get() #查询多行的数据query() #创建数据表,数据库execute() #插入一条数据:sql = "i ...
- CentOS修改网卡名称
转 一.问题说明 测试环境中出现的小问题,因为虚拟机之间经常复制来复制去,导致网卡配置这块的不一致现象. 配置文件的信息: [root@ora10g network-scripts]# catifcf ...
- hibernate 各历史版本下载 spring各历史版本下载
hibernate 各历史版本下载http://sourceforge.net/projects/hibernate/files/ spring各历史版本下载http://www.springsour ...
- 你了解的UIKit结构?
- [电子书] 《Android编程兵书》PDF
Android编程兵书 内容简介: 这是一本Android开发书籍,内容讲解详细,例子丰富,能帮助读者举一反三.在<Android编程兵书>中,每一个知识点的描述都非常详细,并且每一个知识 ...