工具——代码中自动生成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 ...
随机推荐
- 20190105-打印字母C,H,N,口等图像和杨辉三角
1. 打印字母C ****** * * * * ****** def print_c(n): print('*' * n) for i in range(n): print('* ') print(' ...
- Leecode刷题之旅-C语言/python-26.移除元素
/* * @lc app=leetcode.cn id=27 lang=c * * [27] 移除元素 * * https://leetcode-cn.com/problems/remove-elem ...
- C语言实例解析精粹学习笔记——34(用“结构”统计学生成绩)
实例34: 设学生信息包括学号.姓名和五门功课的成绩,要求编写输入输出学生信息的函数.在输入学生信息后,以学生成绩的总分从高到低顺序输出学生信息. 思路: 程序引入一个结构数组依次存储输入的学生信息, ...
- POJ1659 可图性判定
Frogs' Neighborhood Time Limit: 5000MS Memory Limit: 10000K Total Submissions: 10660 Accepted: 4 ...
- 用filter()筛选出素数
'use strict'; function get_primes(arr) { return arr.filter(function isPrime(number) { if (typeof num ...
- idea启动spring boot无法加载或找不到主类
问题产生原因:moudle名称修改,导致项目启动不了 在Terminal界面中执行以下三个命令,我在执行第一个命令的时候报了一个找不到dependency的错误,把那个报错的dependency删了就 ...
- C#读写txt文件的两种方法介绍 v
C#读写txt文件的两种方法介绍 1.添加命名空间 System.IO; System.Text; 2.文件的读取 (1).使用FileStream类进行文件的读取,并将它转换成char数组,然后输出 ...
- BeyondCompare3 提示许可证密钥已被撤销解决方法
今天对比文件提示 许可证密钥已被撤销:3281-0350! 找过了几个注册码还是不行. 正确简单的解决方法: 1.找到 BCState.xml 文件 2.编辑器打开,删除<TCheckFor ...
- eclipse 关闭validating
1.起因 validating XXX 总是非常的浪费时间,有时候还会造成程序卡死 2.解决 windows - Perferences - Validation build 全部去掉
- Qt Qpushbutton美化问题
昨天在论坛看到一个网友的提问,如下 我想到的第一个就是可能需要重载Pushbutton,不过看到有网友回复可以使用stykesheet解决,今天尝试了一下,还是没有成功, 一下是我使用车重载的Push ...