Git环境变量文档

时间:2015-03-24 09:30:51

标签: git

我想对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参数。这些论点是什么,与之相关的文档在哪里?

2 个答案:

答案 0 :(得分:1)

注意(使用Git 2.12更新2017年第1季度):difftool不再是perl程序,而是Git中的C内置工具。

commit 94d3997Jeff King (peff)(2017年1月25日) 请参阅commit 019678dcommit 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' ::

     

当设置环境变量“GIT_EXTERNAL_DIFF”时,将调用由其命名的程序,而不是上面描述的diff调用。对于添加,删除或修改的路径,

     使用7个参数调用

'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)

我使用gitBeyond 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)而不要求确认(默认情况下)。