2011-09-13 10 views
5

のためのパターンを設定する(彼らは唯一の指定されたパターンに一致するファイルに対して呼ばれているように)、1は外部diffのためのパターンを定義し、ツールをマージすることができます:Gitリポジトリ:Mercurialのではdifftoolとmergetool

[diff-patterns] 
**.ext = difftool 
[merge-patterns] 
**.ext = mergetool 

定義する方法Gitのようなパターン?

git-config(1)の[mergetool]セクションには、パターン、マスク、または同様のものは何も言及されていません。

EDIT

ここでは私の.git/configの関連の一部です:

[diff] 
    tool = difftool 
[difftool "difftool"] 
    cmd = difftool.git.sh "$LOCAL" "$REMOTE" "$BASE" 

[merge] 
    tool = mergetool 
[mergetool "mergetool"] 
    cmd = mergetool.git.sh "$LOCAL" "$REMOTE" "$BASE" "$MERGED" 

は、今ではすべてのファイルのために動作します。

私はdifftoolとmergetoolは.ext

EDITで終わる名前のファイルに対してのみ呼ばれるようにしたい:私は、ファイル.git /情報は、/以下の内容で属性を追加した

*.ext diff=difftool 
*.ext merge=mergetool 

は、私はまた、

を追加しました10
[diff "difftool"] 
    name = my custom diff driver 
    driver = difftool.git.sh %A %B %O 
[merge "mergetool"] 
    name = my custom merge driver 
    driver = mergetool.git.sh %A %B %O %A 

と私の.git/config。

今、私はそれは私のdifftoolの代わりにKDiff3のを呼び出す

git difftool 

を実行します。何が間違っていますか?

備考:テストするのが簡単であるため、私はmergetoolではなくdifftoolで遊んでいます。私がdifftoolを構成すると、mergetoolを構成する方法がわかります。

EDIT

Difftoolが機能するようになりました。

.git/configに:

[diff "difftool"] 
    command = difftool.git.sh 

.git /情報/属性:(PATH中)

.ext diff=difftool 

difftool.git.sh

#!/bin/sh 
difftool.jar "$2" "$5" 

しかし、そこにありますWindowsの副作用:git diffがAPPCRASHになりました。

EDIT

私はgit diffのクラッシュやハングを回避する方法を考え出した:一つはgit difftoolを使用するか、shを通じてgit diffを呼び出す必要があります:sh -c "git diff"

答えて

4

あなたはgitattributes fileにマージドライバを使用します。

インスタンスを参照 "How do I tell git to always select my local version for conflicted merges on a specific file?"

*.ext merge=mymergetool 

あなたはgitattributesファイルのパターンを使用することができます。

+0

diffドライバにも同じことが適用されますか?それが機能するように管理できませんでした。私は本当に簡単なサンプルが必要です。 – utapyngo

関連する問題