62

Mac OSX Snow LeopardにGitがあり、emergeの代わりにkdiff3を使用するようにmergeanddiffツールを編集しようとしました。

しかし、使用しようとすると、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

明らかに何か足りないものがありますが、私は何を間違えましたか?

4

2 に答える 2

155

最近のGitバージョンには、のサポートが組み込まれているため、一般的なcmdおよびargskdiff3設定を使用して手動で構成する必要はありません。代わりに:

$ git config --global merge.tool kdiff3

また、 PATH環境にない場合kdiff3は、次のことも行います。

$ git config --global mergetool.kdiff3.path /Applications/kdiff3.app/Contents/MacOS/kdiff3

これにより、git mergetool起動が行われkdiff3ます。競合のある手動マージの後にマージツールを自動的に起動するようにGitを構成する方法はないことに注意してください。

kdiff3Gitが内部でどのように呼び出しているかを本当に知りたい場合は、kdiff3の組み込みのmergetool構成を見てください。

編集:MacOSXもサポートするBeyondCompare4の場合は、(yes、 "3")と交換、上記の行のパスを調整しますkdiff3bc3Git 2.2.0以降ではbc、のエイリアスとして使用できるようになるbc3ため、バージョン番号を気にする必要がなくなります。

于 2013-01-16T13:21:32.090 に答える
1

最近のGitバージョンには、kdiff3のサポートが組み込まれています

はい。ただし、Git 2.12(2017年第1四半期)のみが、これらの組み込みツールが終了コードを信頼できるようにします。

David Aguilar()によるcommit 2967284commit 7c10605(2016年11月29日)を参照してください。( Junio C Hamanoによってマージされました---コミットc4a44e2 、201612月16日)davvid
gitster

mergetoolmergetool.$tool.trustExitCode:組み込みツールの栄誉

組み込みのマージツールには、ツールの終了コードを信頼してマージの成功または失敗を判断できるかどうかについて、ハードコードされた仮定が含まれています。
終了コードが信頼されていないツールの関数には、へcheck_unchanged()の呼び出しが含まれていmerge_cmd()ます。

これに伴う問題は、trustExitCode構成が組み込みツールに適用されないことです。

構成を尊重するための組み込みツールを教えtrustExitCodeます。

(を参照kdiff3

ツールの終了コードが信頼できない場合のrun_merge_cmd()呼び出しを担当するように拡張します。スクリプトレットは呼び出しの責任を負わなくなったため、スクリプトレットから呼び出しを 削除します。check_unchanged()
check_unchanged()

于 2016-12-22T22:27:57.267 に答える