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

news/2024/4/15 7:32:16
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,终止执行后续方法。

http://www.ppmy.cn/news/421651.html

相关文章

怎么入手性能测试,重点以及各项流程

之前在性能测试学习路线里,提到过《软件性能测试、分析与调优实践之路》这本书。 昨天看到之前自己记的读书笔记,整理一下发出来,希望对读者有所帮助。 网上关于性能测试的文章大多数时间比较久远,或者知识点比较散,…

PMP课堂模拟题目及解析(第18期)

171. 一个项目已经结束,然而,项目经理和项目团队成员仍然被要求解决技术问题,进行一些变更,并评估新的需求。若要保证项目开发的产品或服务现在具有运营支持,项目经理应该执行下列哪些工作? (选…

AI实战营第二期 第十节 《MMagic 代码课》——笔记11

AI实战营第二期 第十节 《MMagic 代码课》 MMagic (Multimodal Advanced, Generative, and Intelligent Creation) 是一个供专业人工智能研究人员和机器学习工程师去处理、编辑和生成图像与视频的开源 AIGC 工具箱。 MMagic 允许研究人员和工程师使用最先进的预训练模型&…

2023亚马逊科技中国峰会之Amazon DeepRacer赛车比赛

目录 一、前言 二、什么是 Amazon DeepRacer 三、如何构建自己的第一个强化学习模型 1、创建 Amazon DeepRacer 资源 2、自定义你的赛道 3、开始你的模型 4、关于优化模型 5、在仿真器中测试 6、在真实赛道上测试你的模型 四、中国峰会总决赛 五、自动驾驶赛车名校邀…

【Golang系列】Golang环境配置和第一个Go程序

⭐️前面的话⭐️ 本篇文章将介绍Golang语言的环境配置,以及如何在VS code中运行第一个golang程序。 📒博客主页:未见花闻的博客主页 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📌本文由未…

抖音分身

切割的方法 # -*- encodingutf8 -*- import os aa[] with open(r"C:\Users\admin、\Desktop\fenshen.txt","r",encoding "utf-8",) as fp:afp.readlines()print(a)for i in range(0,len(a)):#print(a[i])#print(len(a))sa[i].split(":&quo…

前端新宠 Svelte 带来哪些新思想?赶紧学起来!

theme: smartblue 本文介绍 点赞 关注 收藏 学会了 Svelte 是我用过最爽的框架,就算 Vue 和 React 再强大,生态再好,我还是更喜欢 Svelte,因为它开发起来真的很爽。 其实在很久之前我就注意到 Svelte ,但一直没把这…

【Front Plant Sci】LvMYB5 和 LvMYB1转录因子调控百合花青素合成

文章信息 题目:Regulation of MYB Transcription Factors of Anthocyanin Synthesis in Lily Flowers 刊名:Frontiers in Plant Science 作者:Xiaojuan Yin, Yulong Feng et al. 单位:Shenyang Agricultural University 日期…

microRNA172靶向APETALA2以调节苹果中的类黄酮生物合成

文章信息 题目: microRNA172 targets APETALA2 to regulate flavonoid biosynthesis in apple (Malus domestica). 刊名:Horticulture Research 作者:Tiyu Ding, Jia-Long Yao et al. 单位:Zhengzhou Fruit Research Institu…

【BMC Plant Biol】MYB转录因子基因HtMYB2调控菊芋花青素生物合成

文章信息 题目:Functional MYB transcription factor gene HtMYB2 is associated with anthocyanin biosynthesis in Helianthus tuberosus L 刊名:BMC Plant Biology 作者:Jieming Gao, Baolong Liu et al. 单位:Northwest I…

GhMYB7促进棉纤维中次生壁纤维素的积累

文章信息 题目:GhMYB7 promotes secondary wall cellulose deposition in cotton fibres by regulating GhCesA gene expression through three distinct cis-elements 刊名:New Phytologist 作者:Junfeng Huang,Wenliang Xu e…

京东3C的赋能革命:如何打造智能手机第一平台?

轰轰烈烈的618电商节已经落下帷幕。 根据京东官方公布的统计数据来看,这个电商节不仅创下了1199亿元的累计下单金额,而且在更多细分领域也开创了新的记录——女装、生鲜等品类不仅首次实现了女性用户基数超越男性用户基数的记录,而且锤子、美…

android 7.1 支持哪些 cpu,安卓7.1加骁龙处理器,新一代全民性价比手机

原标题:安卓7.1加骁龙处理器,新一代全民性价比手机 我们现在选购手机,其实主要是分为两种类型,一种是追求极致的旗舰发烧,另外一种就是追求耐用性价比。而对于追求高性价比耐用型的手机来说,最近发布的红辣…

猕猴桃的红色果肉受到特定的激活-抑制系统的控制

文章信息 题目:The red flesh of kiwifruit is differentially controlled by specific activation–repression systems 刊名:New Phytologist 作者:Wen-qiu Wang,Andrew C. Allan,Xue-ren Yin et al 单位:Zhejia…

辣椒疫霉RXLR效应子抑制植物免疫

文章信息 题目:A Phytophthora capsici RXLR effector targets and inhibits the central immune kinases to suppress plant immunity 刊名:New Phytologist 作者:Xiangxiu Liang,Daolong Dou et al. 单位:China …

sass基础语法大全,你值得拥有

一、基本语法 选择器嵌套#app{color:while;.content{color:red;} }父级选择器 &#app{color:while;&.chird{background:#f0f0f0;} }属性嵌套#app{color:while;&.chird{font:{family:test;size:30px;weight:bold;}} }二、注释 /* 多行注释 */ //单行注释三、变量声…

flume环境配置-传输Hadoop日志(namenode或datanode日志)

解压文件 修改文件名 配置环境变量 执行flume-ng version 将flume-env.sh.template改名为flume-env.sh, 并修改其配置 启动Flume传输Hadoop日志 启动flume 解压文件 tar -zxvf apache-flume-1.9.0-bin.tar.gz -C /opt 修改文件名 mv apache-flume-1.9.0-b…

Win10系统中耳机插入前后面板均没有声音

很多小伙伴可能还在寻找"Realtek音频管理器",可是打开控制面板发现却找不着这一选项,其实这不是什么大问题,只要按住WINS键,输入realtek,打开“Realtek Audio Control”即可,找到“设备高级设置”…

CSDN铁粉增长秘籍

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏1: 🍔🍟🌯C语言初阶 🐻推荐专栏2: 🍔🍟🌯C语言进阶 🔑个人信条: 🌵知行合一 &#x1f…

电脑前面板耳机没声音

电脑前面板耳机没声音怎么设置 打开控制面板——进入音频管理器——勾选“禁用前面板监测”
最新文章