Mac OSX Snow LeopardでGitを使用しており、mergeおよびdiffツールを編集して、emergeではなくkdiff3を使用しようとしました。
しかし、使用しようとするとkdiffのGUIが起動せず、cmdベースのインターフェイスが表示されます。
Gitconfigでの私の設定は次のとおりです。
[merge]
tool = kdiff3
[mergetool "kdiff3"]
cmd = /Applications/kdiff3.app/Contents/MacOS/kdiff3
args = $base $local $other -o $output
trustExitCode = false
[diff]
tool = kdiff3
[difftool "kdiff3"]
cmd = /Applications/kdiff3.app/Contents/MacOS/kdiff3
args = $base $local $other -o $output
trustExitCode = false
明らかに何か足りないものがありますが、私は何を間違えましたか?
最近のGitバージョンにはkdiff3
の組み込みサポートがあるため、汎用のcmdおよびargs設定を使用して手動で構成する必要はありません。代わりに:
$ git config --global merge.tool kdiff3
また、kdiff3
が[〜#〜] path [〜#〜]環境にない場合も同様です。
$ git config --global mergetool.kdiff3.path /Applications/kdiff3.app/Contents/MacOS/kdiff3
これにより、git mergetool
がkdiff3
になります。 方法はありません Gitをautomaticallyに設定するには、競合する手動マージの後にマージツールを起動します。
Gitがどのようにkdiff3
を内部的に呼び出しているかを本当に見たい場合は、 kdiff3の組み込みmergetool設定 を見てください。
Edit:Mac OS Xもサポートするようになった Beyond Compare 4 の場合、kdiff3
をbc3
(はい、「3」)と上記の行のパスを調整します。 Git 2.2.0以降では、bc3
のエイリアスとしてbc
を使用できるようになるため、バージョン番号を気にする必要はありません。
最近のGitバージョンには、kdiff3のサポートが組み込まれています
はい。ただし、Git 2.12(2017年第1四半期)でのみ、これらの組み込みツールが終了コードを信頼できます。
commit 2967284 、 commit 7c10605 (2016年11月29日) David Aguilar(davvid
) を参照してください。
( 浜野潤夫-gitster
- in commit c4a44e2 、2016年12月16日)
mergetool
:組み込みツールの_mergetool.$tool.trustExitCode
_を尊重組み込みのマージツールには、ツールの終了コードを信頼してマージの成功または失敗を判断できるかどうかについてのハードコーディングされた仮定が含まれています。
終了コードが信頼されていないツールには、check_unchanged()
関数にmerge_cmd()
への呼び出しが含まれています。これに伴う問題は、trustExitCode構成が組み込みツールに適用されないことです。
trustExitCode
構成を尊重する組み込みツールを教えます。
( _kdiff3
_ を参照)
run_merge_cmd()
を拡張して、ツールの終了コードが信頼できない場合にcheck_unchanged()
を呼び出すようにします。
スクリプトレットはcheck_unchanged()
呼び出しを削除するようになりました。呼び出しの責任がなくなったためです。