(WSL gitからkdiff3を使用する方法を見つけようとしたとき、私はここで終わり、最後のピースを得たので、その答えを見つけようとしているときに、ここで偶然他の人にも私の解決策を投稿します)
WSL gitのdiff / mergeツールとしてkdiff3を使用する方法
Windows Update 1903を使用すると、はるかに簡単です。wslpathを使用するだけで、Windows側が\ wsl $を介してWSLファイルシステムにアクセスできるようになるため、WindowsからWSLにTMPを共有する必要はありません。
[merge]
renormalize = true
guitool = kdiff3
[diff]
tool = kdiff3
[difftool]
prompt = false
[difftool "kdiff3"]
# Unix style paths must be converted to windows path style
cmd = kdiff3.exe \"`wslpath -w $LOCAL`\" \"`wslpath -w $REMOTE`\"
trustExitCode = false
[mergetool]
keepBackup = false
prompt = false
[mergetool "kdiff3"]
path = kdiff3.exe
trustExitCode = false
Windows Update 1903より前
Windows 10にインストールされているkdiff3をWSLのgitのdiff / mergeツールとして使用する手順:
- kdiff3インストールディレクトリをWindowsパスに追加します。
- TSLをWSLENV Windows環境変数に追加します(WSLENV = TMP / up)。TMP dirは、以前のリビジョンのファイルのように、gitが一時ファイルに使用するため、これが機能するには、パスがWindowsファイルシステム上にある必要があります。
- .bashrcでTMPDIRをTMPに設定します。
# If TMP is passed via WSLENV then use it as TMPDIR
[[ ! -z "$WSLENV" && ! -z "$TMP" ]] && export TMPDIR=$TMP
- kdiff3を呼び出すときに、unix-pathをwindows-pathに変換します。私の.gitconfigのサンプル:
[merge]
renormalize = true
guitool = kdiff3
[diff]
tool = kdiff3
[difftool]
prompt = false
[difftool "kdiff3"]
#path = kdiff3.exe
# Unix style paths must be converted to windows path style by changing '/mnt/c/' or '/c/' to 'c:/'
cmd = kdiff3.exe \"`echo $LOCAL | sed 's_^\\(/mnt\\)\\?/\\([a-z]\\)/_\\2:/_'`\" \"`echo $REMOTE | sed 's_^\\(/mnt\\)\\?/\\([a-z]\\)/_\\2:/_'`\"
trustExitCode = false
[mergetool]
keepBackup = false
prompt = false
[mergetool "kdiff3"]
path = kdiff3.exe
trustExitCode = false