覚書

日々学んだことをつらつらと

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の方は以下のように設定する f:id:gihara2624:20151226213808p:plain


Vimの引数調べるの面倒だった。。。