Winmerge を git の差分ツールとして使用する方法に関するこの投稿をフォローしています。最初はうまくいきません(よろしいので、ここでの私の質問には関係ありません)。主な違いの 1 つは、ネイティブ Windows 環境のmsysgitではなく、MSYS2内で提供される git を使用していることです。関連する git config フラグメントは次のとおりです。
[diff]
guitool = winmerge
[difftool "winmerge"]
cmd = \"????/WinMergeU.exe\" /e /s /u /r /wl \"$LOCAL\" \"$REMOTE\"
驚いたことに、winmerge のコマンド ライン オプションの一部が実行時にドライブ文字に変換され、失敗しました。後に実行される実際のコマンドgit difftool -g
は次のとおりです。
"????\WinMergeU.exe" /e S:/ U:/ R:/ D:/msys64/wl <file1> <file2>
D:/msys64
MSYS2 インストール プレフィックスはどこにありますか。エラーの矛盾に注意してください —/e
変換されていない、/wl
パス コンポーネントに変換されている、その他すべてがドライブ文字に変換されている。すべてのオプションのプレフィックスとして-
代わりに使用することにより、後で解決策が見つかります。/
[difftool "winmerge"]
cmd = \"????/WinMergeU.exe\" -e -s -u -r -wl \"$LOCAL\" \"$REMOTE\"
私の質問は:
- 一貫性のない動作の理由は?
cygpath
パス変換の実行方法に関する参照はありますか? - 幸いなことに、WinMerge は
-
オプション インジケーターとしての使用を受け入れます。/
のみが受け入れられるGUI ツールの場合、回避策はありますか?