1 需求描述
當前在修復(fù)bug時,公司流程要求附上修改前后的對比報告。一開始杰刽,我直接使用svn的diff命令來生成對比報告菠发,這種方法也可以看,但顯示效果不太好贺嫂,其他同事看起來不方便滓鸠。
平時在查看代碼差異時,一般會使用Beyond Compare工具來查看涝婉,對比結(jié)果比較清晰哥力。其也可以導(dǎo)出報告,但需要自己手動操作墩弯,沒有svn diff 一行命令這么方便吩跋。后來發(fā)現(xiàn)Beyond Compare也支持通過腳本來生成報告,于是研究了一下渔工,并實現(xiàn)了一個腳本锌钮。
2 實現(xiàn)效果
通過一行命令直接生成下面帶上下文的html 格式的對比報告
3 腳本要點
3.1 Beyond Compare 命令行工具安裝
點擊 Beyond Compare -> 安裝命令行工具
,可以直接安裝命令行
3.2 運行Beyond Compare 命令
對于Mac 來說引矩,Beyond Compare主要有兩個命令可以使用
bcompare
: 啟動比較并立即返回
bcomp
: 啟動比較并等待它完成
我這里想實現(xiàn)生成報告后將其發(fā)送到指定郵箱梁丘,故選擇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
:這三個參數(shù)不是bcomp 的參數(shù)杨何,而是腳本里面的參數(shù),在后面會介紹沥邻。
3.3 Beyond Compare 腳本的編寫
具體解釋見注釋
# Turn logging on. 打開日志危虱,方便定位問題
log normal "beyond_compare_log.txt"
# Set up basic comparison features. 指定比較規(guī)則,當前指定的是 基于規(guī)則的比較
criteria rules-based
# Filter out log files. 文件過濾唐全,可指定對文件夾中那些或那類文件進行比較埃跷,與用戶界面的配置一樣
filter "-*.xcuserdatad;-*IDEWorkspaceChecks.plist;-.DS_Store;"
# Load first comparison. 加載比較對象,這里的%1 %2為占位符邮利,可通過bcomp 來傳入?yún)?shù)弥雹,如3.1.2 所示。
load %1 %2
# expand all 展開所有文件夾近弟,以對其中內(nèi)容進行遍歷
expand all
# select files. 指定操作的對象缅糟,這里選擇的是所有有差異的文件
select all.diff
# Generate a report of the differences.
# file-report生成文件對比報告挺智;
# layout: 排版祷愉,這里是邊并排窗宦;
# options:可選參數(shù),這里指定了要顯示上下文和行數(shù)二鳄;
# output-to:指定導(dǎo)出文件路徑赴涵; output-options: 導(dǎo)出可選參數(shù),這里指定其自動換行订讼,導(dǎo)出格式為多色的html格式髓窜,其他參數(shù)參見文檔
# 注意:這里有一個需要關(guān)注的點,display-context這個可選參數(shù)在file-report中是沒有的欺殿,但如果你比較的是文本文件寄纵,是可以正常運行的,也會生成帶上下文的比較報告脖苏;但如果有圖片之類的二進制程拭,就會報腳本錯誤。
file-report layout:side-by-side options:display-context,line-numbers output-to:%3 output-options:wrap-word,html-color
這里所有的命令和參數(shù)都可以在官方文檔中找到:
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
)