如何获得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 ...
随机推荐
- Linux 文件查看相关的一些命令
文件压缩解压命令 # 解压 xxx.xz 并删除 xz -d test.tar.xz # 打包成 xxx.tar , 语法: tar -cvf 最后包名.tar ./要打包文件 ./要打包的文件 ta ...
- 克隆slave
在日常生活中,我们做的比较多的操作就是在线添加从库,比如线上有一主一丛两个数据库,由于业务的需要一台从库的读取量无法满足现在的需求,这样就需要我们在线添加从库,出于安全考虑,我们通常需要在从库上进行在 ...
- Electron小白入门自学笔记(一)
码文不易啊,转载请带上本文链接呀,感谢感谢 https://www.cnblogs.com/echoyya/p/14297176.html 一.从Hello Electron开始 创建一个空的文件夹, ...
- DDIC_TYPELENG_INCONSISTENT错误的解决办法
当执行某个TCODE,例如SM66,出现类似如下的dump界面 大概意思就是说是ddic种的某个数据类型有问题,可能是数据结构,可能是数据元素或者是表等等 通过查阅资料了解到,对于note122290 ...
- [usaco2010 Oct]Soda Machine
题目描述 有N个人要去膜拜JZ,他们不知道JZ会出现在哪里,因此每个人有一个活动范围,只要JZ出现在这个范围内就能被膜拜, 伟大的JZ当然希望膜拜他的人越多越好,但是JZ不能分身,因此只能选择一个位置 ...
- 集成多种协议、用于 USBC 端口的快充协议芯片IP2723
1. 特性 快充规格 集成 QC4/QC4+输出快充协议 - 兼容 QC2.0/QC3.0 - 支持 Class B 电压等级 集成 FCP 输出快充协议 集成 SCP 输出快充协议 集成 ...
- salesforce零基础学习(一百)Mobile Device Tracking
本篇参考: Mobile Device Tracking (salesforce.com) UserDevice | SOAP API Developer Guide | Salesforce Dev ...
- LocalDateTime、OffsetDateTime、ZonedDateTime互转,这一篇绝对喂饱你
前言 你好,我是A哥(YourBatman). 在JSR 310日期时间体系了,一共有三个API可用于表示日期时间: LocalDateTime:本地日期时间 OffsetDateTime:带偏移量的 ...
- Before you launch a goroutine, know when it will stop The Zen of Go
The Zen of Go https://the-zen-of-go.netlify.app/ Ten engineering values for writing simple, readable ...
- 架构风格 vs. 架构模式 vs. 设计模式(译)
4.架构风格 vs. 架构模式 vs. 设计模式(译) - 简书 https://www.jianshu.com/p/d8dce27f279f