分步將 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 桌面版,將其接入您的版本控制流程。
下載試用