.h文件宏定义修改、三段式版本处理、svn changelog提取(总结)

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
dd----.h文件宏定义修改、三段式版本处理、changelog提取总结
版本一
处理思路总结
  1. 对输入的4个版本值进行格式化修改
  • sw (sw:00:00)分割成8个字符存进map中key对应.h文件8的宏定义名value为分割后的8个字符。
  • mcu (000000)格式化字符串取第1、2、3、4位组成新字符串并在格式化后的新字符串前添加0x拼接为新字符串。
  • switch (00000)取第2、1、4、5位组成新字符串并在新字符串添加0x拼接为新字符串。
  • mpu (0000)在该值前添加0x格式化为新字符串。
  1. 获取.h文件宏定义和其值存进map

获取特定路径的产品团队的.h文件并进行解析,用正则表达式匹配待修改的11个宏定义所在的行
如果发现这个11个宏定义的行使用正则表达式匹配该行的空格 分别将含有这11个宏定义的行进行分割分割为3部分取宏定义名和宏定义值这两部分存进数组;
将分别将这11个数组内的的宏定义名和宏定义值分别作为key和value存进macros map。

  1. 更新宏定义的值,并将key和更新后的value存进map:

分别进行判断如果macro map存储了11个宏定义的key则分别对比.h文件内的11个宏定义key的value和前边格式化后的版本值是否相等
若不相等则将.h文件内宏定义的值改为格式化后的新值并将key和新value存进macro map。

  1. 将更新后的宏定义的值写进.h宏定义中

使用正则表达式匹配.h文件中含有要修改的11个宏定义的行若匹配到该宏定义则将修改后的宏定义的新值写到.文件中。

版本二

修改MCU版本号处理实现3段式版本

处理思路
  1. 从产品代码的"DD_VDP_Version_Changelog.txt"文件中获取当前发布的两段式版本号
    从产品团队的Changelog.txt中读取最后一个以&开头的行,使用正则表达式匹配该行的version并进行格式转化(例如8.1->0801,8.2->0802)

  2. 构建系统新增文件存储全局唯一的3段式版本号

在文件最上方填入初始化为000000的3段式版本

  1. 构建脚本比较两个版本号生成3段式的第3段版本号
  • 与定义的ncu_version.txt中的数值(例如: 000000)的前四位进行对比,若格式化后的产品团队的4位版本号与自定义的三段式版本的前4位相同则将三段式版本的后2位自增1并拼接上yyyy-MM-dd HH:mm:ss格式的当前系统时间写到文件中每次构建后将产生的新版本号和时间戳追加到文件的最上方。

  • 与定义的ncu_version.txt中的数值(例如: 000000)的前四位进行对比,若格式化后的产品团队的4位版本号与自定义的三段式版本的前4位不同则将自定义的三段式版本的前四位替换为产品的4位版本号并将后2位重置为00将替换后的前四位和重置后的后两位拼接成一个新的三段式版本并拼接上yyyy-MM-dd HH:mm:ss格式的当前系统时间写到文件中每次构建后将产生的新版本号和时间戳追加到文件的最上方。

版本三

只获取自定义文件第一行的6位版本号,对版本号进行分割,前4位加0x存到map中,后2位前加0x存到map修改.h中关于mcu的两个宏定义值。原先的.h文件的宏定义多增加一个关于mcu版本的宏定义

版本四

提取svn changelog,以及两个功能的联合使用:

根据上边自定义版本中每次侯建产生的时间戳范围提取svn分支的changelog写到文件内每次构建后写入文件的时间戳作为提取svn log的终止版本上次构建及文件第二行的时间戳作为提取svn log的起始版本每次构建后在文件最上方追加写入方式。

  • 每次写入changelog文件的内容分为三部分
  1. 第一部分本次构建时产生的mcu版本和该次构建的时间戳
  2. 第二部分经过格式化对齐后的log信息表头Revision、Author、Date、Message和-----分割符
  3. 第三部分每次传入提取log的起始时间和终止时间后生成的log信息经过格式化对齐
  4. 要注意当commit Message是多行的情况该版本的message除了第一行需要对齐其余的message行也要处理成格式对齐。
  • 考虑到第一次构建时自定义版本中只有一个时间而写log时需要两个时间作为范围需要进行以下判断
    如果自定义版本中第一行有日期但第二行没有日期时则无法传入起始日期获取log,终止执行后续方法。
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6