在平时的多版本开发过程中,需要通过版本号来定位到源码版本,便于定位问题。常规工程实践是设置版本号为X.Y.Z.N,一般X表示主版本号,Y表示子版本号,我一般将Z设为0,N为本次提交的SVN版本号,下面来介绍如何通过SVN自带的”SubWCRev.exe”工具来生产版本号信息。

    打开SVN自带的帮助文档,搜索关键字 SubWC,可以发现如下信息:

    不得不说,外国的软件帮助文档写的确实详细有效,带着问题认真读下去,一切都会水落石出的。在此,只摘取关键信息,汇总如下:

    主要原理是SubCRev会读取本地svn库信息,将重要信息通过预设变量的方式,替换模板文件中的占位符,生成自定义的版本信息文件,有了版本信息文件,通过VS中的资源文件来引用对应的变量,达到自动改变版本号的目的。

    我们就按照最普通的使用方式来使用 subwcrev.exe 本地路径 模板文件 目标文件

    本地路径为本地svn源码库路径,就是包含隐含.svn目录的那个路径

    模板文件:带有预设变量的头文件,我是如下设置的

    

  目标文件: 只需要目标文件名就可以,为了意义清晰,一般取version.h名字

  切换路径到本地SVN库的根路径下,通过命令行执行 SubWCRev.exe . version_template.h version.h 指令,就可以在本地得到想要的version.h 文件.

SVN自动生成版本号信息的更多相关文章

  1. Jenkins持续部署-自动生成版本号

    目录 Jenkins持续部署-自动生成版本号 目录 前言 目的 详细流程 获取SVN Reversion 获取需求号 设置编译前读取版本号 总结 参考文献 Jenkins持续部署-自动生成版本号 目录 ...

  2. 最好的 Xcode 自动生成版本号技术

    在 bloglovin ,我们使用自动生成版本号来设置Xcode,使当前的版本号为在Git活跃的分支上 的提交数.它一直正常工作着,但我们的技术也不是一帆风顺的. 糟糕的老方法 我们使用的技术是来自一 ...

  3. Pycharm 设置python文件自动生成头部信息模板

    设置头部信息路径: 打开File—Settings—Editor—File and Code Templates—Python Script 输入要自动生成的头部信息模板 这样,新建py文件就会自动生 ...

  4. 2018-8-10-VisualStudio-2017-项目格式-自动生成版本号

    title author date CreateTime categories VisualStudio 2017 项目格式 自动生成版本号 lindexi 2018-08-10 19:16:52 + ...

  5. 1、Pycharm中创建项目自动生成头信息

    1.打开PyCharm 选择File-Settings 2.模块变量描述,并且重新创建一个.py的文件测试,检测是否自动生成头信息

  6. 使用私有gitlab发布自动生成版本号和标签(version和tag)(骚)

    设置 semantic ,自动生成版本号和标签 FROM node:14-buster-slim LABEL maintainer="wangyunpeng" COPY sourc ...

  7. 修改AssemblyInfo.cs自动生成版本号

    一. 版本号自动生成方法 1.把 AssemblyInfo.cs文件中的[assembly:AssemblyVersion("1.0.0.0")]改成[assembly:Assem ...

  8. .net 程序集自动生成版本号

    一. 版本号自动生成方法 只需把 AssemblyInfo.cs文件中的 [assembly:AssemblyVersion("1.0.0.0")]改成 [assembly:Ass ...

  9. [转载].net程序集自动生成版本号

    原文:http://hi.baidu.com/bcbgrand/item/a74a7ba71c3b0ea928ce9dce .net程序版本号的格式是4个十进制数字 比如 2.5.729.2 依次是 ...

随机推荐

  1. java中的不同的value类型从map中获取不同的value值

    protected <V> V getValFromMap(Map<String, Object> headers, String name, Class<V> t ...

  2. JAVA-数据库之查询记录

    相关资料:<21天学通Java Web开发> ResultSet结果集1.使用exectteQuery()方法查询数据.2.exectueQuery()方法接收一个查询SQL语句.3.返回 ...

  3. laravel 5.4在控制器构造函数中获取auth中间件失败

    想在控制器的构造函数中取出登录的用户 ,保存到类的属性中. 当然可以用Auth::user(),可以做到,但是不想这么做. 没想到这个属性一直是空的.后来用xdebug调试,在中间件handle和构造 ...

  4. Android 底部菜单固定到底部

    今天搞了很久的一个问题,导航菜单没有固定到底部,因为上面是ListView,可是没内容,于是就浮动上去了. 效果如下: 这里采用的是一个碎片,代码是: <LinearLayout xmlns:a ...

  5. 【Lua】环境安装与HelloWorld

    emmmm...看了W3C和菜鸟教程的环境安装,感觉还是省略了一些东西的. 记录一下在Windows上怎么开始编写Lua的学习过程. 环境安装 直接在Lua官网上找到最新版的下载地址,根据说明下载Lu ...

  6. Python对字典(directory)按key和value排序

    distance = {9149: 0, 9150: 26, 9151: 24, 9152: 24, 9153: 24, 9154: 27, 9155: 25, 9156: 30, 9158: 20, ...

  7. 腾讯云安装Hadoop遇到的问题

    1.能正常访问bincoding.cn:50030,不能连接到9000端口 Call to bincoding.cn/123.206.212.115:9000 failed on connection ...

  8. Android——FilenameFilter总结(转)

    一.FilenameFilter介绍   java.io.FilenameFilter是文件名过滤器,用来过滤不符合规格的文件名,并返回合格的文件: 一般地: (1)String[] fs = f.l ...

  9. Vagrant (3) —— 复制/备份Vagrant Box

    Vagrant (3) -- 复制/备份Vagrant Box 摘要 介绍复制/备份Vagrant Box基本方法 版本 Vagrant版本: 1.8.1 内容 复制vagrant box并压缩 关闭 ...

  10. Java学习笔记:具体解释传值和传引用

    传值和传引用 When you're passing primitives into a method ,you get a distinct copy of the primitive. When ...