**已关闭。**此问题正在寻求书籍、工具、软件库等的建议。它不符合Stack Overflow guidelines。它目前不接受回答。
我们不允许问题寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答问题。
8年前就关门了。
Improve this question
我想对git-difftool
进行一些更改,以便更好地支持BeyondCompare
。我注意到这个Perl程序使用了很多ENV变量,比如:
GIT_DIFF_TOOL
GIT_DIFFTOOL_EXTCMD
GIT_DIFFTOOL_DIRDIFF
GIT_DIFFTOOL_PROMPT
GIT_PAGER
不幸的是,我没有找到这些变量的任何文档。Google今天不是我的朋友。
编辑
正如VonC所回答的,上述变量与git-difftool--helper.sh
相关。我仍然对GIT_EXTERNAL_DIFF
感到困惑。Git将启动git-difftool--helper.sh
,它迭代每个7个参数。这些参数是什么,与之相关的文档在哪里?
2条答案
按热度按时间xxe27gdn1#
注意(2017年第一季度更新为Git 2.12):
difftool
不再是Perl程序,而是Git中的C内置工具。参见commit 94d3997(2017年1月25日),作者Jeff King (
peff
)。参见Johannes Schindelin (
dscho
)的commit 019678d、commit 03831ef(2017年1月19日)和commit be8a90e(2017年1月17日)。(由Junio C Hamano --
gitster
--合并至commit b7786bb,2017年1月31日)2015年3月的回答:
git-difftool.perl
只是使用这些环境变量,让用户有机会覆盖您在“Git Diff with Beyond Compare”中看到的配置值。这些环境变量在
git-difftool--helper.sh
中使用,它们可以覆盖本地配置。diff config
提到了配置diff.external
,它可以被GIT_EXTERNAL_DIFF
环境变量覆盖。该命令的调用方式与git的“git Diffs”下的参数相同。
这就是记录7个参数的地方:
'
GIT_EXTERNAL_DIFF
'::当环境变量'
GIT_EXTERNAL_DIFF
'被设置时,由它命名的程序被调用,而不是上面描述的diff调用。对于添加、删除或修改的路径,使用7个参数调用'
GIT_EXTERNAL_DIFF
':其中:
<old|new>-file
::是GIT_EXTERNAL_DIFF
可以用来读取<old|new>
内容的文件,<old|new>-hex
::是40位十六进制数的SHA-1哈希,<old|new>-mode
::是文件模式的八进制表示。在Git 2.29(2020年第4季度)中,
GIT_EXTERNAL_DIFF
的作用得到了澄清。参见commit 17bae89(2020年9月1日)Philippe Blain (
phil-blain
)。(由Junio C Hamano --
gitster
--合并于commit cd332b2,2020年9月3日)git.txt
:正确的旧“GIT_EXTERNAL_DIFF
”说明签字人:菲利普·布兰
在fde97d8ac6(“Update documentation to remove incorrect
GIT_DIFF_OPTS
example.",2006-11-27,Git v1.5.0-rc 0--merge)中,'GIT_EXTERNAL_DIFF
'变量的描述从'diff-format.txt
'移到了'git.txt
',并且文档被更新以删除'diff
'调用**,因为Git默认情况下不再使用外部diff
程序**。但是,‘
GIT_EXTERNAL_DIFF
’的描述仍然提到“而不是上面描述的diff调用”,这令人困惑。纠正这个过时的句子。
git
现在在其手册页中包括:GIT_EXTERNAL_DIFF
:当环境变量
GIT_EXTERNAL_DIFF
被设置时,它命名的程序被调用来生成diff,Git不使用其内置的diff机制。如果命令行选项是隐藏的或太明显,可能很容易留下帮助文本
NULL
,但如果这样做,git subcmd -h和git subcmd--help-all
会出现segfaults。现在(Git 2.43,Q4 2023),帮助文本是可选的。参见commit cd52d9e(2023年8月26日),作者René Scharfe (
rscharfe
)。(由Junio C Hamano --
gitster
--合并于commit 27e2ea9,2023年9月5日)parse-options
:允许省略选项帮助文本签字人:勒内·沙菲
1b68387(“
builtin/receive-pack.c
:useparse_options
API”,2016-03-02,Git v2.9.0-rc 0--merge listed in batch #2)新增了--stateless-rpc
,--advertise-refs
,--reject-thin-pack-for-testing
选项,字符串为NULL
help
; 03831ef(“difftool
:implement the functionality in the builtin”,2017-01-19,Git v2.12.0-rc 0--merge listed in batch #8)类似地添加了“无助”选项--prompt
。这样做大概是因为所有四个选项都是隐藏的和不言自明的。
但是,当将选项
--help-all
与其各自的工具一起使用时,它们会导致NULL
指针解引用。优雅地处理这样的选项,在循环的顶部将
NULL
指针变成一个空字符串,总是在结尾打印一个换行符,并通过帮助文本的分隔换行符。zyfwsgd62#
我使用
git
和Beyond Compare
,我从来没有使用任何脚本来配置它们。git config --global --list
的输出摘录:您需要安装
Beyond Compare
的命令行工具。这很简单:只需从Beyond Compare的菜单中选择“安装命令行工具...”命令,并按照说明操作(它会要求您输入密码,因为它需要在系统目录中操作)。当它完成时,它显示:
命令行工具安装成功
/usr/local/bin/bcomp:
启动比较并等待比较完成。
/usr/local/bin/b比较:
启动比较并立即返回。
然后使用以下命令配置
git
:检查一切是否正确设置:
(将
file.txt
替换为存储库中更改的真实的文件的名称)。此外,如果您运行:
那么
git difftool
将启动所选的diff程序(在本例中为bcomp
)而不要求确认(默认情况下)。