前言
beyond compare对于程序员来说,可谓是一个不可多得的文件比较工具,试用过winMerge以及一些自带的diff工具之后,还是发现beyond compare界面最为友好,功能也比其他工具强大。
最近有一个需求是能否在每次release之后,可以比较方便的产生各个版本的升级patch包。持续集成的工具(类似jenkins,Travis CI)我没有了解过,不知道是否能有这个功能。但是仅仅对于这个小需求来说,利用beyond compare工具就可以做到。
利用BC GUI生成patch包
选中需要对比的两个文件夹,右键选择compare
在BC中选择diff,只显示有变化的文件
在BC菜单栏中Edit -> Expand all, Edit -> select all files
在选中的文件中右击,选择copy to folder
在打开的对话框中,选择要生成patch的文件(left/right side),选择folder structure为base
patch包生成完毕。
编写脚本自动化
BC其实是支持脚本运行的,可移步与此。同时安装完BC之后,会在安装目录有CHM的帮助文件,具体的一些语法可参考该文件。
编写脚本,将脚本保存为
bc_auto_script.txt
1
2
3
4
5
6
7
8
9log verbose "c:\bclog.txt" #表示将脚本的log记录在bclog.txt中
load "d:\testv1.0" "d:\testv2.0" #加载需要比较的文件夹
filter "-*.log;-lib\" #利用beyong compare中的filter:除去*.log文件以及lib子文件夹,即这些不参与比较
expand all #展开文件,这个命令与beyond compare中的UI的expand all是对应的
select right.diff.files right.orphan.files #只选取有差异的文件
copyto right path:base "D:\diff.zip" #将有差异的文件拷贝到d:\diff中,注意copyto命令的参数
##right: 对应上述load命令中的参数,即testv2.0,意思是将testv2.0的差异文件copy出来
##path:base: 指保留目录结构
##d:\diff: 输出目录,也可以指明为zip文件:如"d:\diff.zip",这样最后会生成一个zip包cmd下执行:
"C:\Program Files (x86)\Beyond Compare 4\Bcompare.exe" /silent "@D:\bc_auto_script.txt"
, BC安装路径, silent参数表示不启动GUI, 后面是在第一部中编写的脚本文件。diff.zip即为生成的patch文件。如果要实现批量的生成patch包,可以编写一个批处理脚本。可参考这里。