问题
我想git在输出到可以处理颜色的设备时自动为输出着色,而在不能处理的时候不给它着色。如何做到这一点?
背景
我有时会使用机器本身为旧机器开发代码。其中一些可以处理 ANSI 颜色,而另一些则不能。在 UNIX 系统上,我们曾经有一个名为TERMINFO的数据库,其中列出了每个终端的功能。通过检查功能很容易判断终端是否支持颜色colors。如果是 -1,那么程序绝对不应该发送 ANSI 颜色序列。
$ tput colors
-1
理想情况下,git 会使用TERMINFO来自动检测 ANSI 颜色序列是否合适。但它没有并且仅检查isatty()。我怀疑 git 开发人员添加TERMINFO支持并不是一个高优先级,所以我正在寻找任何能够提供相同功能的解决方法。
我已经知道如何禁用 git color 使用git config,这不是我要问的。我希望仅在从不支持 ANSI 颜色的终端(例如 Digital VT340)登录时禁用它。
我也已经看到了GIT_CONFIG_PARAMETERS="'color.ui=never'"环境变量,但是根据@bk2204 和@torek 的说法,该变量很快就会消失。