Mercurialでは、外部の差分ツールとマージツールのパターンを定義できます(指定されたパターンに一致するファイルに対してのみ呼び出されるように)。
[diff-patterns]
**.ext = difftool
[merge-patterns]
**.ext = mergetool
Gitでそのようなパターンを定義する方法は?
git-config(1)の[mergetool]セクションには、パターン、マスク、または同様のものについては言及されていません。
編集:
これが私の.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
編集:
次の内容のファイル.git/info/attributesを追加しました。
*.ext diff=difftool
*.ext merge=mergetool
私も追加しました
[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に。
今私は実行します
git difftool
私のdifftoolの代わりにKDiff3を呼び出します。私は何を間違えますか?
備考:テストが簡単なため、mergetoolではなくdifftoolを使用しています。また、difftoolを構成できれば、mergetoolの構成方法が明らかになると思います。
編集:
Difftoolが機能するようになりました。
.git / config:
[diff "difftool"]
command = difftool.git.sh
.git / info / attributes:
.ext diff=difftool
difftool.git.sh(PATH内)
#!/bin/sh
difftool.jar "$2" "$5"
ただし、Windowsには副作用がありますgit diff
。結果はAPPCRASHになります。
編集:
クラッシュやハングを回避する方法を理解しましたgit diff
:使用するgit difftool
か、呼び出す必要がありgit diff
ますsh
:sh -c "git diff"