如何获得svn的版本号信息?
方法一 popen(可获取命令行执行后的输出结果)
转载自:
1 /*
2 Execute command line commands and get specific results by comparison cTemplate
3 result storage in cResult
4
5 Example:
6
7 d:\SVN>svn info D:\SVN\ZVideoProcessor
8 Path: ZVideoProcessor
9 Working Copy Root Path: D:\SVN
10 URL: http://192.168.2.196/svn/Repos/ZVideoProcessor
11 Relative URL: ^/ZVideoProcessor
12 Repository Root: http://192.168.2.196/svn/Repos
13 Repository UUID: 43546b21-47e8-432e-acd4-bb9acb1f9fba
14 Revision: 1270
15 Node Kind: directory
16 Schedule: normal
17 Last Changed Author: sam.zhen
18 Last Changed Rev: 1268
19 Last Changed Date: 2018-11-01 20:29:28 +0800 (周四, 01 十一月 2018)
20
21 cmd: svn info D:\SVN\ZVideoProcessor
22 cTemplate: Revision:
23 cResult: 1270
24 */
25 int execmd(char* cmd,char* cResult,char* cTemplate)
26 {
27 int iTemplateSize=strlen(cTemplate);
28 char buffer[128];
29 FILE* pipe = _popen(cmd, "r");//open pipe ,execute cmd
30 if (!pipe)
31 {
32 cout<<"execute "<<cmd<<"error"<<endl;
33 return -1;
34 }
35
36 while(!feof(pipe))
37 {
38 if(fgets(buffer, 128, pipe))
39 {
40 //if cTemplate in buffer,then storage result in cResult
41 int res=strncmp(cTemplate,buffer,iTemplateSize);
42 if(res==0)
43 {
44 strncat(cResult,buffer+iTemplateSize,10);
45 int i=strlen(cResult);//because have '\n'
46 cResult[i-1]='\0';
47 break;
48 }
49 else
50 {
51 continue;
52 }
53 }
54 }
55
56 _pclose(pipe);//close pipe
57 return 0;
58 }
59
60 int main()
61 {
62 //get svn version
63 char cSvnVersionNum[10];
64 memset(cSvnVersionNum,0,sizeof(cSvnVersionNum));
65 execmd("svn info ../../../SVN",cSvnVersionNum,"Revision: ");
66 return 0;
67 }
方法二 通过预处理方式
转载自:
1.编写版本模板文件svn_revision_template.h
1 #ifndef _SVN_REISION_H_
2 #define _SVN_REVISION_H_
3 #define AMG_LIB_VER_SVN_VERSION "$WCREV$"
4 #endif // !_SVN_REISION_H_
注意$WCREV$这里不能修改
2.新建版本文件svn_revision.h
1 #ifndef _SVN_REISION_H_
2 #define _SVN_REVISION_H_
3 #define AMG_LIB_VER_SVN_VERSION "1267"
4 #endif // !_SVN_REISION_H_
3.通过预先生成事件,添加下面的批处理命令
subwcrev.exe .\ .\svn_revision_template.h .\svn_revision.h
注意第一个参数.\ 指需要获取哪个路径的svn号码
第二个参数.\svn_revision_template.h 指模板文件路径
第三个参数.\svn_revision.h 指修改后文件保存路径
4.代码中使用:直接使用.\svn_revision.h文件中的宏
AMG_LIB_VER_SVN_VERSION
如何获得svn的版本号信息?的更多相关文章
- SVN自动生成版本号信息
在平时的多版本开发过程中,需要通过版本号来定位到源码版本,便于定位问题.常规工程实践是设置版本号为X.Y.Z.N,一般X表示主版本号,Y表示子版本号,我一般将Z设为0,N为本次提交的SVN版本 ...
- VS中实时获取SVN的版本号并写入到AssemblyInfo.cs中
在开发项目时,需要知道当前发布的到底是哪个版本,比较好的方式就是获取SVN的版本来作为项目的版本.项目版本一般由主版本.次版本.内部版本.修改版本四个部分组成,我们获取的SVN版本就作为修改版本即可. ...
- 隐藏nginx 版本号信息
为了安全,想将http请求响应头里的nginx版本号信息隐藏掉: 1. nginx配置文件里增加 server_tokens off; server_tokens作用域是http server loc ...
- 网站程序版本号信息也可能造成bd快照严重滞后
在a5上看到一篇“破解阿里云论坛的快照时间迷局 或涉足所有phpwind论坛”的文章,里面说到pw的一个版本信息导致了快照滞后的问题,这再次验证了之前那篇文章“时间戳造成快照滞后”的准确性. 如下图所 ...
- 隐藏nginx 版本号信息(转)
为了安全,想将http请求响应头里的nginx版本号信息隐藏掉: 1. nginx配置文件里增加 server_tokens off; server_tokens作用域是http server loc ...
- 锤子Smartisan T1手机官方4.4.2系统内核版本号信息
从锤子smartisan T1手机官方系统EGL中获取内核版本号信息(由cofface提供): I/Adreno-EGL( 816): <qeglDrvAPI_eglInitialize:41 ...
- VS中实时获取SVN的版本号并写入到AssemblyInfo.cs中(C#)
原文:VS中实时获取SVN的版本号并写入到AssemblyInfo.cs中(C#) 在开发项目时,需要知道当前发布的到底是哪个版本,比较好的方式就是获取SVN的版本来作为项目的版本.项目版本一般由主版 ...
- 【转载】如何查看sqlserver客户端的版本号信息
在sqlserver的使用过程中,有时候可能会因为sqlserver版本过低等原因的导致无法附加以及还原数据库,我们可以通过sql server management studio软件的帮助菜单参看到 ...
- Nginx优化之基本安全优化 (隐藏Nginx软件版本号信息,更改源码隐藏Nginx软件名及版本号,更改Nginx服务的默认用户)
一,隐藏Nginx软件版本号信息 查看版本号 curl -I 192.168.0.220 HTTP/1.1 200 OK Server: nginx/1.6.2 #这里清晰的暴露了Web版本号(1.6 ...
随机推荐
- Command3
压缩和解压 gzip gunzip .gz 指定文件必须带后缀 gzip file filename.gz zip unzip .zip unzip filename.zip directory zi ...
- PHP curl爬取数据 加入cookie值
public function get_cookie(){ header("Content-type:text/html;Charset=utf8"); $ch =curl_ini ...
- Java实现RS485串口通信
前言 前段时间赶项目的过程中,遇到一个调用RS485串口通信的需求,赶完项目因为楼主处理私事,没来得及完成文章的更新,现在终于可以整理一下当时的demo,记录下来. 首先说一下大概需求:这个项目是机器 ...
- python中列表的insert和append的效率对比
python中insert和append方法都可以向列表中插入数据只不过append默认插入列表的末尾,insert可以指定位置插入元素. 我们来测试一下他俩插入数据的效率: 测试同时对一个列表进行插 ...
- Head First 设计模式 —— 13. 代理 (Proxy) 模式
思考题 如何设计一个支持远程方法调用的系统?你要怎样才能让开发人员不用写太多代码?让远程调用看起来像本地调用一样,毫无瑕疵? P435 已经接触过 RPC 了,所以就很容易知道具体流程:客户端调用目标 ...
- 误删数据库怎么办?mysql 回滚,撤销操作,恢复数据
刚刚不小心把数据库删掉了,于是想着上网上找找有没有可以恢复数据库的方法,没想到还真有,除了备份以外,还有以下方法. 在mysql有时执行了错误的update或者delete时导致大量数据错误恢复的办法 ...
- SAP中的密码输入框
在SAP中的密码输入框,可分为两种情况: 1.用selection语句书写的选择屏幕上的密码输入框 实现的方式就是在AT SELECTION-SCREEN OUTPUT事件中写入如下代码: LOOP ...
- JAVA中@Override的含义
@Override是伪代码,表示重写(当然不写也可以),不过写上有如下好处: 1.可以当注释用,方便阅读: 2.编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错.例 ...
- Linux内核分析_课程学习总结报告
请您根据本课程所学内容总结梳理出一个精简的Linux系统概念模型,最大程度统摄整顿本课程及相关的知识信息,模型应该是逻辑上可以运转的.自洽的,并举例某一两个具体例子(比如读写文件.分配内存.使用I/O ...
- Http中的options请求
引自:https://www.jianshu.com/p/5cf82f092201.https://www.cnblogs.com/mamimi/p/10602722.html 一.options是什 ...