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

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,终止执行后续方法。

你可能感兴趣的:(Java开发,SVN,svn,java)