ホームページ > 記事 > システムチュートリアル > svn diff を vimdiff に置き換えます: コードを比較するためのツール
Linux では、svn diff コマンドを直接使用してコードの変更を表示するのは非常に難しいため、インターネット上でより良い解決策を探しました。それは、特に次のような場合に、svn diff のコード表示ツールとして vimdiff を使用することです。 vim を使い慣れている人にとっては非常に便利です。
たとえば、svn diff コマンドを使用して特定のファイルの変更を比較する場合は、次のコマンドを実行します。
$ svn diff -r4420 ngx_http_limit_req_module.c次に、次のコマンドが実際にデフォルトの差分プログラムに送信されます:
-u -L ngx_http_limit_req_module.c (リビジョン 4420) -L ngx_http_limit_req_module.c (作業コピー) .svn/tmp/tempfile.tmp ngx_http_limit_req_module.csvn 公式 FAQ での svn diff の説明 (外部 diff コマンドを使用する場合、Subversion は非常に複雑なコマンド ラインを生成します。最初のパラメータは特定の --diff-cmd で、その後に特定の --extensions が続きます (ただし、空白の -- 記号を使用すると拡張子は無視されます)。または --extensions が指定されていないか、--extensions が空の場合は、 「-u」パラメータ。 3 番目と 4 番目の引数の場合、Subversion は「-L」と最初のファイルのラベル (たとえば、「project_issues.html (revision 11209)」) を渡します。5 番目と 6 番目の引数は別の「 -L」であり、 2 番目のファイルのラベル。7 番目と 8 番目の引数は、それぞれ最初と 2 番目のファイルの名前です (たとえば、「.svn/text-base/project_issues.html.svn-base」と「.svn/tmp /project_issues」) .html.tmp").
diff の内部呼び出しコマンドを理解すると、vimdiff を diff プログラムとして使用するのは比較的簡単です。
vimdiff が 2 つのファイルを比較する場合、必要なのは 2 つのファイルのパスとファイル名 (上記の diff 内部コマンドの 7 番目と 8 番目のパラメーター) だけです。
また、diff 内部コマンドのパラメーターが多すぎるため、--diff-cmd を使用して vimdiff を直接呼び出すことができないことも説明されています (コマンドは次のとおりです)。
$ svn diff --diff-cmd vimdiff -r4420 ngx_http_limit_req_module.c
したがって、別のスクリプトを自分で作成し、このスクリプトを diff プログラムとして使用し、diff の内部コマンドを取得し、7 番目と 8 番目のパラメーターのみを取得して vimdiff に渡す必要があります。パラメータは解決できます 質問が多すぎます。
スクリプト (diffwrap.sh) は次のとおりです:
リーリーまた、svn は設定ファイル内のデフォルトの diff プログラムを変更する機能も提供しているため、svn diff を使用するたびに --diff-cmd を指定する必要はありません。
~/.subversion/config を変更し、次の構成行を見つけます:
# diff-cmd = diff_program (diff、gdiff など)
に変更します。上記のスクリプトにパスを追加するだけです。たとえば、
diff-cmd = /usr/local/bin/diffwrap.sh
将来的には、svn diff コマンドを使用すると、デフォルトで vimdiff が開き、2 つのファイルを比較できるようになります。
レンダリング:
以上がsvn diff を vimdiff に置き換えます: コードを比較するためのツールの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。