ファイル $HOME/.subversion/config
を編集します したがって、次の行が含まれます:
diff-cmd = <your favorite diff application>
一部の差分アプリは svn をサポートしています。例:diff-cmd = meld
正常に動作するはずです。ただし、vimdiff
そうではない それらの中の一つ。その理由は svn diff
通常のように 1 番目と 2 番目ではなく、6 番目と 7 番目の引数として比較するファイルを指定します。したがって、この状況でほとんどの人が行うことは次のとおりです。
ラッパー スクリプトを作成する :
#!/bin/sh
/usr/bin/vimdiff ${6} ${7}
たとえば、$HOME/bin/svndiffwrap.sh に保存します
実行可能にすることを忘れないでください chmod +x $HOME/bin/svndiffwrap.sh
.
svn diff コマンドにする :
$HOME/.subversion/config
で :
diff-cmd = /home/<username>/bin/svndiffwrap.sh
注意 :一部の svn クライアントは $HOME
を使用するパスをサポートしていません 環境変数。そのため、フルパスを指定すると便利です。
次の場所にあります:http://blog.tplus1.com/index.php/2007/08/29/how-to-use-vimdiff-as-the-subversion-diff-tool/
このブログ投稿では、スクリプトを SVN book external diff tools example から直接取得しています:
diffwrap.sh
#!/bin/sh
# Configure your favorite diff program here.
DIFF="/usr/local/bin/vimdiff"
# Subversion provides the paths we need as the sixth and seventh
# parameters.
LEFT=${6}
RIGHT=${7}
# Call the diff command (change the following line to make sense for
# your merge program).
$DIFF $LEFT $RIGHT
# Return an errorcode of 0 if no differences were detected, 1 if some were.
# Any other errorcode will be treated as fatal.
注: これは、あなたの vimdiff
が /usr/local/bin
にあります 、私の場合、Fedora では /usr/bin
でした .見つからない場合は実行してください:
$ whereis vimdiff
次に ~/.subversion/config
で :
[helpers]
...
diff-cmd = /home/<username>/bin/diffwrap.sh
vimdiff <(svn diff)
<()
svn diff
の出力から疑似ファイルを作成するプロセス置換と呼ばれます vimdiff
の場合
次のようにシェル エイリアスを作成できます:alias svndiff='vimdiff <(svn diff)'
同様の回答
PS - これは私がまだ見つけていない最も簡単な解決策です。それは私の人生を変えました (比較的言えば)!
VCSCommand で実行できます - プラグインをインストールし、ファイルに移動して <Leader>cv
を押します