升级、补丁包所需模块自动化查找
来源:互联网 发布:linux arm编译源码包 编辑:程序博客网 时间:2024/05/17 18:42
当单一的一件事连续做了几次,那我们就要考虑是否可以自动化。因为一但单一,做多了就会觉得无聊,无聊的情况下,人就很容易马虎,导致一些细节上可能出错,另外只要有人参与就可能出错,所以遇到重复无聊的事,我们就应该考虑自动化。就像圣斗士星矢里面的一句话:"同一招对我使用两次是无效的",呵呵~当然我们不可能做到马虎了一次之后不再马虎,我们为了彻底杜绝之后犯错的机会,那我们就让机器来做吧。
当某个程序要发布一个升级包,如果程序本身不大,只有几个dll和配置文件,那要找出那些被修改的模块很容易,可能只要花几分钟时间查看一下就能知道。但对于那些比较大的程序,可能有1,2百个模块和无数多个配置文件,在经历了小组内2,3个月的一次迭代后,要找出哪些模块被修改了是件麻烦的事,可能会花费一个上午的时间把这些相关的模块和文件找出来,杯具的是花了那么多时间,最后还可能漏掉了一些,之后的测试可能会发现错误,这就又要花同样甚至更多的时间来校验~
我不想在做一次同样的事了,我统计的眼睛都花了,我感觉我现在是机器人,但我还是要把事情做完做好~
如何自动查找修改的及被依赖到的模块。
下面的自动化是建立在SVN+window脚本的基础上
1.假设程序代码的目录结构是这样的
...
E:/trunk/Code
E:/trunk/Include
E:/trunk/Config
...
其中Code目录存放各个模块的代码,Include是公布出去的接口,Config是配置文件及第三方库等
2.需要重新编译打包的模块及配置文件
a) Code目录下被修改的模块
b) Config下被修改的文件
a) 用到Include中被修改过的接口的模块
如IA修改了,除了找出Code目录下用到IA接口的模块,还要找到用到IB接口的模块,如果还有IC继承或者间接继承自IA则要递归查找,找接口依赖可能是最麻烦的事了
3.通过SVN的版本记录,输出指定版本范围修改的文件记录
首先机器上要安装Subversion,然后用下面的命令行
a) -r 1:100指的是输出版本1到100的日志。
b) -v指输出详细日志。
c) --xml以xml方式输出日志。
d) http://...trunk/code是我们需要取得日志信息的路径。
e) svnlog.xml输出的日志文件。
f) 如果本机没保存svn用户名和密码,那还要在svn后面加上 --username 用户名 --password ***。
这样svn就会把日志的完整信息输出到文件,我们只要分析此文件就能知道一定时间内被修改了哪些文件了。
g) svnlog.xml的格式大概是这样的(当前电脑没装SVN,只是凭印象大概轮廓是这样的)
这样我们就能获得被修改的配置文件及修改的模块了。
4.查找用到修改接口的模块
假设我们修改了接口IA
通过windows提供的命令findstr,具体参数参考findstr,下面只针对用到的做相关解释
a) /s表示还会查找子目录,一直递归下去
b) /m表示当查找到时只显示文件名 ,主要是有利于我们下面的分析
c) /<IA/>,“/<和/>"表示字符串头和字符串尾,也就是严格查找IA,如果文件中存在IAA就不会被查找到。
d) E:/trunk/code/*.cpp表示查找E:/trunk/code/目录下所有.cpp的文件
e) find.txt输出查找信息
5.查找修改接口的派生接口,也就是上面提到的IB
a) /<public.*IA/> 其中"."表示任意字符,"*"表示前面的字符出现0次或多次,这里有一个小问题,那就是当有个接口名是publicIA,也将查找出来,但是命名这样的接口很少见,如果要处理就是对查找到的结果再有效性检查一下,也就是deriveInterface.txt文件查找到的结果验证下。
b) /n 表示查找到/<public.*IA/>字符串后显示所在行号,取得行号后我们就可以向上搜索第一个关键子class,之后就能取到IB这个接口名了。
c) E:/trunk/include/*.h表示查找E:/trunk/include/目录下所有.h的文件
d) deriveInterface.txt查找到的结果文件
e) 如果我们找到有接口派生自接口IA,则重复第4第5步,就能找到所有用到这些接口的模块了
f) 下面是findstr几个参数查找的结果
6.对于上面的几个步骤写个程序串联起来就能实现自动化查找了,再加上编译自动化,一气呵成。但是对于修改了某某接口怎么自动化查找出来,这个问题,有一点复杂了,不知道大家有没好的方法。
上面所写的只是一种方法,大家有啥更好的方法或者借助第3方软件啥的,可以讨论下~
- 升级、补丁包所需模块自动化查找
- AIX下的升级补丁包的命令
- 从已知模块查找所需类的方法@python -chapter7
- 人物升级所需EXP
- Python应用所需模块
- Android 自动化测试所需环境搭建
- 升级DB2 UDB V8.1的补丁包到级别 6
- Wix打包系列 (六)制作升级和补丁包
- Wix打包系列 (六)制作升级和补丁包
- Wix打包系列 (六)制作升级和补丁包
- Wix打包系列 (六)制作升级和补丁包
- win7 sp1简体中文升级补丁包(64位)
- Oracle中查找所需对象
- 发布、升级版本自动化
- 缺陷查找自动化
- win 2003 SP2 (32位X86) 中文版 升级补丁包 下载地址 光盘整合集成方法
- Visual Studio 2010 RC正式发布 - 模型和CUIT工程需要升级 + KB980610 + KB980920补丁包
- Visual Studio 2012 Update 1 离线升级包(相当于VS2012 SP1离线补丁包)
- 堆和栈的区别(转过无数次的文章)
- JSP中的常见问题及一些源码分析
- 2011年美国大学电子电气工程-通讯工程专业研究生排名
- 文件系统
- MBProgressHUD 显示等待框
- 升级、补丁包所需模块自动化查找
- 端午节
- java bean相关
- 图情方向语义本体的自动构建
- 《你的灯亮着吗?》笔记
- 单点登陆、session共享解决方案(2)
- 每天一个设计模式之Flyweight
- Agnitum Outpost Firewall Pro 2009 个人一直在用的防火墙
- 我在学校的信息化建设的总结——圆满的句号