uta*_*ngo 6 git mercurial mergetool difftool
在Mercurial中,可以为外部差异和合并工具定义模式(以便仅为匹配指定模式的文件调用它们):
[diff-patterns]
**.ext = difftool
[merge-patterns]
**.ext = mergetool
Run Code Online (Sandbox Code Playgroud)
如何在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"
Run Code Online (Sandbox Code Playgroud)
现在它适用于所有文件.
我希望只为名称以.结尾的文件调用difftool和mergetool.ext
编辑:
我添加了一个文件.git/info/attributes,其中包含以下内容:
*.ext diff=difftool
*.ext merge=mergetool
Run Code Online (Sandbox Code Playgroud)
我还补充道
[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
Run Code Online (Sandbox Code Playgroud)
到我的.git/config.
现在我跑了
git difftool
Run Code Online (Sandbox Code Playgroud)
它调用KDiff3而不是我的difftool.我做错了什么?
备注:我正在使用difftool而不是mergetool,因为它更容易测试,我相信如果我设法配置difftool,对我来说很明显如何配置mergetool.
编辑:
Difftool现在有效.
的.git /配置:
[diff "difftool"]
command = difftool.git.sh
Run Code Online (Sandbox Code Playgroud)
git的/信息/属性:
.ext diff=difftool
Run Code Online (Sandbox Code Playgroud)
difftool.git.sh(在PATH中)
#!/bin/sh
difftool.jar "$2" "$5"
Run Code Online (Sandbox Code Playgroud)
但是在Windows上存在副作用:git diff现在导致APPCRASH.
编辑:
我已经想出如何避免崩溃或悬挂git diff:应该使用git difftool或git diff通过sh:sh -c "git diff"
您可以在gitattributes file.
例如,请参阅“如何告诉 git 始终选择本地版本来进行特定文件上的冲突合并? ”
*.ext merge=mymergetool
Run Code Online (Sandbox Code Playgroud)
您可以在 gitattributes 文件中使用模式。
| 归档时间: |
|
| 查看次数: |
1361 次 |
| 最近记录: |