Beyond Compare 脚本生成比较报告小结

1 需求描述

当前在修复bug时,公司流程要求附上修改前后的对比报告。一开始,我直接使用svn的diff命令来生成对比报告,这种方法也可以看,但显示效果不太好,其他同事看起来不方便。
平时在查看代码差异时,一般会使用Beyond Compare工具来查看,对比结果比较清晰。其也可以导出报告,但需要自己手动操作,没有svn diff 一行命令这么方便。后来发现Beyond Compare也支持通过脚本来生成报告,于是研究了一下,并实现了一个脚本。

2 实现效果

通过一行命令直接生成下面带上下文的html 格式的对比报告

3 脚本要点

3.1 Beyond Compare 命令行工具安装

点击 Beyond Compare -> 安装命令行工具,可以直接安装命令行

3.2 运行Beyond Compare 命令

对于Mac 来说,Beyond Compare主要有两个命令可以使用
bcompare: 启动比较并立即返回
bcomp: 启动比较并等待它完成

我这里想实现生成报告后将其发送到指定邮箱,故选择bcomp命令。
对于运行脚本来说,只需要运行:
bcomp -silent @compare_script.txt folder-1 folder-2 report.html
其中:
-silent:告诉Beyond Compare不用开启用户界面,后台运行生成报告即可
@compare_script.txt:Beyond Compare 脚本的路径,需要在其路径前加@,以标示其是一个脚本路径,而不是一个普通文件,如果路径中包含空格,记得用""来包裹路径
folder-1 folder-2 report.html:这三个参数不是bcomp 的参数,而是脚本里面的参数,在后面会介绍。

3.3 Beyond Compare 脚本的编写

具体解释见注释

# Turn logging on. 打开日志,方便定位问题
log normal "beyond_compare_log.txt"

# Set up basic comparison features. 指定比较规则,当前指定的是 基于规则的比较
criteria rules-based

# Filter out log files. 文件过滤,可指定对文件夹中那些或那类文件进行比较,与用户界面的配置一样
filter "-*.xcuserdatad;-*IDEWorkspaceChecks.plist;-.DS_Store;"

# Load first comparison. 加载比较对象,这里的%1 %2为占位符,可通过bcomp 来传入参数,如3.1.2 所示。
load %1 %2

# expand all 展开所有文件夹,以对其中内容进行遍历
expand all

# select files. 指定操作的对象,这里选择的是所有有差异的文件
select all.diff

# Generate a report of the differences.
# file-report生成文件对比报告;
# layout: 排版,这里是边并排;
# options:可选参数,这里指定了要显示上下文和行数;
# output-to:指定导出文件路径; output-options: 导出可选参数,这里指定其自动换行,导出格式为多色的html格式,其他参数参见文档
# 注意:这里有一个需要关注的点,display-context这个可选参数在file-report中是没有的,但如果你比较的是文本文件,是可以正常运行的,也会生成带上下文的比较报告;但如果有图片之类的二进制,就会报脚本错误。
file-report layout:side-by-side options:display-context,line-numbers output-to:%3 output-options:wrap-word,html-color

这里所有的命令和参数都可以在官方文档中找到:
https://www.scootersoftware.com/v4help/index.html?scripting_reference.html
https://www.scootersoftware.com/v4help/index.html?scripting_reference.html

也可以在这里查看官方的脚本示例:
https://www.scootersoftware.com/v4help/
(找到Using Beyond Comapre -> Scripts -> Sample Scripts)

你可能感兴趣的:(Beyond Compare 脚本生成比较报告小结)