(WSL git から kdiff3 を使用する方法を見つけようとしたとき、私はここにたどり着き、最終的なピースを手に入れたので、その答えを見つけようとしているときにここでつまずいた人のために私の解決策を投稿します)
WSL git の差分/マージ ツールとして kdiff3 を使用する方法
Windows Update 1903 を使用すると、はるかに簡単になります。Windows 側は \wsl$ 経由で WSL ファイルシステムにアクセスできるようになったため、wslpath を使用するだけで、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 パスに追加します。
- TMP を 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