我想对git-difftool
进行一些更改,以便更好地支持BeyondCompare
。我注意到这个Perl程序使用了很多ENV变量,例如:
GIT_DIFF_TOOL
GIT_DIFFTOOL_EXTCMD
GIT_DIFFTOOL_DIRDIFF
GIT_DIFFTOOL_PROMPT
GIT_PAGER
不幸的是我没有找到这些变量的任何文档。谷歌今天不是我的朋友......
修改
如VonC所述,上述变量与git-difftool--helper.sh
有关。我仍然对GIT_EXTERNAL_DIFF
感到困惑。 Git将启动git-difftool--helper.sh
,它迭代每个7参数。这些论点是什么,与之相关的文档在哪里?
答案 0 :(得分:1)
注意(使用Git 2.12更新2017年第1季度):difftool
不再是perl程序,而是Git中的C内置工具。
commit 94d3997见Jeff King (peff
)(2017年1月25日)
请参阅commit 019678d,commit 03831ef(2017年1月19日)和commit be8a90e(2017年1月17日)Johannes Schindelin (dscho
)。
(Junio C Hamano -- gitster
--于2017年1月31日commit b7786bb合并)
2015年3月的原始答案:
git-difftool.perl
只是使用这些环境变量为用户提供覆盖“Git Diff with Beyond Compare”中可以看到的配置值的机会。
这些环境变量在git-difftool--helper.sh
中使用,它们可以覆盖本地配置。
diff config
提到了diff.external
环境变量可以覆盖的配置GIT_EXTERNAL_DIFF
。
该命令应使用 under "git Diffs" of git 所述的参数进行调用。
这是记录7个参数的地方:
'
GIT_EXTERNAL_DIFF
' ::当设置环境变量“
使用7个参数调用GIT_EXTERNAL_DIFF
”时,将调用由其命名的程序,而不是上面描述的diff调用。对于添加,删除或修改的路径,'
GIT_EXTERNAL_DIFF
':
path old-file old-hex old-mode new-file new-hex new-mode
其中:
<old|new>-file
::文件GIT_EXTERNAL_DIFF
可用于阅读<old|new>
的内容,<old|new>-hex
::是40-hexdigit SHA-1哈希,<old|new>-mode
::是文件模式的八进制表示。
答案 1 :(得分:-1)
我使用git
和Beyond Compare
,我从未使用任何脚本来配置它们。
摘自git config --global --list
的输出:
difftool.bcomp.cmd=/usr/local/bin/bcomp "$LOCAL" "$REMOTE" "$BASE" "$MERGED"
difftool.bcomp.trustexitcode=true
diff.tool=bcomp
您需要安装Beyond Compare
的命令行工具。这很简单:只需从Beyond Compare菜单中选择“Install Command Line Tools ...”命令,然后按照说明操作(它会询问您的密码,因为它需要在系统目录中运行)。
完成后显示:
已成功安装命令行工具。
的/ usr / local / bin中/ bcomp:
启动比较并等待它完成。的/ usr / local / bin中/ bcompare:
启动比较并立即返回。
然后使用以下方式配置git
git config --global --add difftool.bcomp.cmd '/usr/local/bin/bcomp "$LOCAL" "$REMOTE" "$BASE" "$MERGED"'
git config --global --add difftool.bcomp.trustexitcode true
git config --global --add diff.tool bcomp
检查是否所有设置都正确:
git difftool file.txt
(将file.txt
替换为存储库中更改的真实文件的名称。
此外,如果您运行:
git config --global --add mergetool.prompt false
然后git difftool
将启动所选的差异程序(在这种情况下为bcomp
)而不要求确认(默认情况下)。