Git:为difftool和mergetool配置模式 [英] Git: configure patterns for difftool and mergetool
问题描述
[diff-patterns]
**。ext = difftool
[merge-patterns]
**。ext = mergetool
如何在Git中定义这样的模式?
$ b $ git-config中的[mergetool]部分(1)没有提及任何模式,掩码或任何类似的内容。
编辑:
这是我的.git / config的相关部分:
[diff]
工具= difftool
[difftooldifftool]
cmd = difftool.git.sh$ LOCAL$ REMOTE$ BASE
[合并]
工具= mergetool
[mergetoolmergetool]
cmd = mergetool.git.sh$ LOCAL$ REMOTE$ BASE$ MERGED
现在它适用于所有文件。
我希望我的difftool和mergetool被称为只有名称为e的文件使用 .ext
编辑:
我用以下内容添加了文件.git / info / attributes:
*。ext diff = difftool
* .ext merge = mergetool
我也加入了
[diffdifftool]
name =我的自定义差异驱动程序
驱动程序= difftool.git.sh%A% B%O
[合并mergetool]
name =我的自定义合并驱动程序
驱动程序= mergetool.git.sh%A%B%O%A
添加到我的.git / config。
现在我运行
git difftool
它叫KDiff3而不是我的difftool。我做错了什么?
备注:我正在玩difftool而不是mergetool,因为它更容易测试,我相信如果我设法配置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 -cgit diff
解决方案您可以在
gitattributes $ c $中使用合并驱动程序c> file
。
请参阅 a>
*。ext merge = mymergetool
您可以在gitattributes文件中使用模式。
In Mercurial, one can define a pattern for external diff and merge tools (so that they are called only for files matching the pattern specified):
[diff-patterns] **.ext = difftool [merge-patterns] **.ext = mergetool
How to define such patterns in Git?
[mergetool] section in git-config(1) does not mention any pattern, mask or anyting similar.
EDIT:
Here is a relevant part of my .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"
Now it works for all files.
I want my difftool and mergetool to be called only for files with names ending with
.ext
EDIT:
I have added a file .git/info/attributes with the following contents:
*.ext diff=difftool *.ext merge=mergetool
I've also added
[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
to my .git/config.
Now I run
git difftool
It calls KDiff3 instead of my difftool. What do I do wrong?
Remark: I'm playing with difftool instead of mergetool because it is easier to test and I believe that if I manage to configure difftool, it will be obvious for me how to configure mergetool.
EDIT:
Difftool now works.
.git/config:
[diff "difftool"] command = difftool.git.sh
.git/info/attributes:
.ext diff=difftool
difftool.git.sh (in PATH)
#!/bin/sh difftool.jar "$2" "$5"
But there is a side-effect on Windows:
git diff
now results in APPCRASH.EDIT:
I have figured out how to avoid crashing or hanging of
git diff
: one should usegit difftool
or callgit diff
throughsh
:sh -c "git diff"
解决方案You would use a merge driver in a
gitattributes
file.See for instance "How do I tell git to always select my local version for conflicted merges on a specific file?"
*.ext merge=mymergetool
You can use patterns in a gitattributes file.
这篇关于Git:为difftool和mergetool配置模式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!