如何获得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 ...
随机推荐
- 冷饭新炒:理解Redisson中分布式锁的实现
前提 在很早很早之前,写过一篇文章介绍过Redis中的red lock的实现,但是在生产环境中,笔者所负责的项目使用的分布式锁组件一直是Redisson.Redisson是具备多种内存数据网格特性的基 ...
- .NET 云原生架构师训练营(模块二 基础巩固 RabbitMQ Masstransit 详解)--学习笔记
2.6.7 RabbitMQ -- Masstransit 详解 Consumer 消费者 Producer 生产者 Request-Response 请求-响应 Consumer 消费者 在 Mas ...
- MongoDB备份(mongodump)与恢复(mongorestore)工具实践
mongodump和mongorestore实践 1.mongodump备份工具 mongodump能够在Mongodb运行时进行备份,它的工作原理是对运行的Mongodb做查询,然后将所有查到的文档 ...
- newbee-mall 开源商城新计划:秒杀功能、优惠券、对接支付宝
新项目是 newbee-mall 的升级版本,暂时就叫它 newbee-mall-plus 吧,第一阶段会开发秒杀功能.优惠券.对接支付宝这些功能,也会慢慢加入 Redis. Elastic Sear ...
- 一道有趣的golang排错题
很久没写博客了,不得不说go语言爱好者周刊是个宝贝,本来想随便看看打发时间的,没想到一下子给了我久违的灵感. go语言爱好者周刊78期出了一道非常有意思的题目. 我们来看看题目.先给出如下的代码: p ...
- [SSL]在线检查服务器HTTPS安全
https://myssl.com/ SSL/TLS安全评估报告 https://www.ssllabs.com/ssltest/ SSL Server Test HTTPS开启工具(IIS) htt ...
- 国内最具影响力科技创投媒体36Kr的容器化之路
本文由1月19日晚36Kr运维开发工程师田翰明在Rancher技术交流群的技术分享整理而成.微信搜索rancher2,添加Rancher小助手为好友,加入技术群,实时参加下一次分享~ 田翰明,36Kr ...
- 微信小程序腾讯地图SDK使用方法
一.本篇文章主要知识点有以下几种: 1.授权当前位置 2.map组件的使用 3.腾讯地图逆地址解析 4.坐标系的转化 二.效果如下: 三.WXML代码 <map id="map&quo ...
- bootstrap 轮播图带缩列图两端对齐,并自动换行然后左对齐!
禁止自动轮播 data-interval="false" 完整代码如下: 1 <!DOCTYPE html> 2 <html> 3 4 <head&g ...
- (SqlServe)关于字符串长度被截断的问题
1. 问题描述 在同步数据时常常会发现一个错误:将截断字符串或二进制数据. 2. 问题原因 这个问题出现的原因是:要插入的数值字段的长度超出了数据库中字段的长度.比如:插入的字符串字节长度是40,数据 ...