SourceTreeの外部DiffでMacVimを使う話
SourceTreeの外部diffでMacVimを使う時に、いくつか問題が発生したのでメモ
発生した問題
①SourceTreeから渡されるパスが"/"が2つ連続していてMacVimがそのパスを開けない ②diffツールにmvimdiffを使うと、内容が表示されない。
原因
①SourceTreeの不具合?わからん。。。。
②mvimdiffはプロセスをwaitしないモードで起動する様子
↓
mvimdiffをwaitしないので、制御が親プロセスに即戻る
↓
制御が戻ると渡されるファイルは消える(一時ファイルの様子)
↓
Vimで開くときにはもうファイルが消えている
解決策
SourceTreeから直接mvimdiffを呼ぶのではなく、シェルスクリプトを間に噛ませた。
#!/bin/sh LOCAL_PATH=`echo $1 | sed -e 's/\/\//\//g'` REMOTE_PATH=`echo $2 | sed -e 's/\/\//\//g'` /Applications/MacVim.app/Contents/MacOS/Vim -g -f -d $LOCAL_PATH -d $REMOTE_PATH
①に対しては、"//"を"/"にsed
②に対しては、Vimの引数を調べて、子プロオプション + diff モードで起動
するようにして対策した。
SourceTreeの方は以下のように設定する
Vimの引数調べるの面倒だった。。。