分步将 xlCompare 集成到 GIT
下面是一套将您的 git 仓库与 xlCompare 应用连接起来的简单流程。xlCompare 拥有一组标准的命令行参数(CLI),与差异查看器及合并工具通用,因此您几乎可以将它集成到任何版本控制应用中。
第 1 步——在电脑上安装 xlCompare
访问下载页面,或使用直达下载链接 https://xlCompare.com/xlcompare-12-04.msi。将安装文件保存到电脑并运行以安装 xlCompare。
下文将用到 xlCompare 在您电脑上的安装路径。默认情况下,xlCompare 安装到以下文件夹:
C:/Users/{User Name}/AppData/Local/Spreadsheet Tools/xlCompare
但如果您安装到了其他位置(例如 D:\xlCompare),则需相应修改。
第 2 步——编辑 .git/config 文件
在您仓库的 .git/config 文件中加入以下内容:
[diff "xlcompare"]
command = 'C:/Users/{User Name}/AppData/Local/Spreadsheet Tools/xlCompare/exceldiff.cmd'
[merge "xlcompare"]
name = xlCompare
driver = 'C:/Users/{User Name}/AppData/Local/Spreadsheet Tools/xlCompare/excelmerge.cmd' %A %O %B
[mergetool "xlcompare"]
cmd = 'C:/Users/{User Name}/AppData/Local/Spreadsheet Tools/xlCompare/excelmerge.cmd' "$LOCAL" "$BASE" "$REMOTE" "$MERGED"
trustExitCode = false
重要:
xlCompare 文件夹的路径包含空格字符,因此我们用单引号将其包裹。如果遗漏这些引号,您会在 Git 控制台中收到错误信息。
%A %O %B 是 GIT 用于合并工具的命令行参数:
- %A —— Excel 文件的 LOCAL(本地)版本
- %O —— Excel 文件的 BASE(共同)版本
- %B —— Excel 文件的 REMOTE(远程)版本
为什么合并有两行?
第一行(merge)将 xlCompare 设为自动合并操作的驱动,用于在更新本地仓库文件时使用。第二行(mergetool)允许通过命令 git mergetool --tool=xlcompare -y --no-prompt {file path} 使用 xlCompare。
trustExitCode 设为 false 时,由您来判断合并是否成功;不过在合并模式下,xlCompare 会以退出码返回冲突数量,因此如有需要,您可将此参数设为 true。
第 3 步——在 git 中将 Excel 文件与 xlCompare 关联
这是本指南的最后一步。在仓库根目录创建 .gitattributes 文件(它可能已存在),在文件末尾加入以下内容:
*.xlsx diff=xlcompare
*.xlsx merge=xlcompare
它会告诉 git:在需要差异查看器或合并工具时,对 Excel 文件使用 xlCompare。
开始用 git diff 命令配合 xlCompare!
就这样,您已将 xlCompare 与 git 仓库中的 Excel 文件连接起来。现在 git diff 命令会通过打开带差异报告的 xlCompare 来显示 2 个 XLSX 文件的差异。
如何集成到 SourceTree 等 GUI 工具?
如果您的版本控制应用允许为 Excel 文件的差异与合并操作设置 GUI 工具,请使用以下设置。
差异工具
将 xlCompare 的路径用作工具,默认为:
'C:/Users/{User Name}/AppData/Local/Spreadsheet Tools/xlCompare/exceldiff-source-tree.cmd'
合并工具
将 xlCompare 的路径用作工具,默认为:
'C:/Users/{User Name}/AppData/Local/Spreadsheet Tools/xlCompare/excelmerge.cmd'
命令行开关如下:
"$LOCAL" "$BASE" "$REMOTE" "$MERGED"
如果版本控制应用没有 $MERGED 参数怎么办?将它从命令行中移除,使用以下语法:
"$LOCAL" "$BASE" "$REMOTE"
重要
上面命令行开关中我们使用了 $LOCAL、$BASE 与 $REMOTE 名称,您可能需要将它们替换为版本控制应用所使用的相应名称。
注意
命令文件 exceldiff-source-tree.cmd 与 excelmerge.cmd 已包含在 xlCompare 安装包中,它们就在您电脑上的 xlCompare 安装文件夹内。
问答
本节介绍一些关于 git 集成 的常见问题。如果您在将 xlCompare 用作 Excel 文件的差异查看器或合并工具时需要帮助,请联系我们,我们很乐意提供协助。
为什么我们用 CMD 文件作为差异与合并工具的驱动?
如果您的版本控制系统要求差异或合并工具为控制台应用,就需要使用这种方式。xlCompare 本身是 GUI 应用,在要求控制台工具时并不总能工作。这种情况下,您可以使用我们的驱动,或为您的版本控制应用创建类似的驱动。
CMD 文件里有什么
exceldiff.cmd:
"%~dp0xlCompare.exe" %5 %2 -quit_on_close -titleMine:LOCAL -titleBase:REMOTE -rep:"%__CD__%"
"%~dp0xlCompare.exe"—— 当前目录中 xlCompare 应用的路径- %5 —— Excel 文件的 LOCAL 版本(git 使用 7 个参数,第 5 个为本地文件)
- %2 —— Excel 文件的 REMOTE 版本
- quit_on_close —— 关闭对比后 xlCompare 自动退出,省去点击关闭按钮的时间
- titleMine:LOCAL —— Git 使用临时文件名,LOCAL 与 REMOTE 能清晰标识文件
- rep:"%__CD__%" —— 仓库路径,这是非常重要的开关,应放在最后;缺少此参数将无法打开子文件夹中的文件
excelmerge.cmd:
"%~dp0xlCompare.exe" -merge -titleMine:LOCAL -titleBase:BASE -titleTheir:REMOTE "%1" "%2" "%3" -output:"%4" -rep:"%__CD__%"
"%~dp0xlCompare.exe"—— 当前目录中 xlCompare 应用的路径- merge —— 对传入文件执行合并操作,若有冲突则打开 GUI 窗口
- titleMine:LOCAL —— Git 使用临时文件名,LOCAL 与 REMOTE 能清晰标识文件
"%1" "%2" "%3"—— Excel 文件的本地、基准与远程版本路径- output:"%4" —— 当以 mergetool 命令调用 xlCompare 时,此开关让 xlCompare 将结果保存到 $MERGED 路径(在上述 mergetool 语法中作为第 4 个参数传入)
- rep:"%__CD__%" —— 仓库路径,应作为最后一个开关;缺少它将无法打开子文件夹中的文件
如您所见,CMD 文件的内容很简单,您可以通过添加 CONFIG 开关来修改它们,或为 GIT 创建自己的 CMD 包装脚本。
将 xlCompare 与 GIT 等工具配合使用是否需要授权?
XLSX 与 XML 文件:将 xlCompare 用作 XLSX 与 XML 文件的差异或合并工具,需要 xlCompare 专业版授权。
文本文件:对于文本文件,您无需 xlCompare 授权,可免费将 xlCompare 用于文本文件。
下载 xlCompare 桌面版,将其接入您的版本控制流程。
下载试用