【问题标题】:override git config --system in .gitconfig user file ( git config --global )覆盖 .gitconfig 用户文件中的 git config --system ( git config --global )
【发布时间】:2013-07-10 10:27:00
【问题描述】:

我在系统范围的配置中有该文件(但它也可以包含在git config include.path="/path/to/defaultconfig" 中我想重置以前设置的一些值。

特别是,默认配置文件包含diff.external = git-diff-wrapper,我想为某些用户停用它

【问题讨论】:

    标签: git git-config


    【解决方案1】:

    如果是系统范围的配置,每个用户都可以覆盖他/她的全局和本地设置中的配置值。

    但没有简单的方法可以“停用”较低配置文件中的设置。
    即使将其设置为"" 通常也会产生意想不到的后果。那个very topic was discussed in April 2010

    例如,停用send-email 选项:

    的确,在考虑了一下之后,使用 no value to unset 是一个可怕的、可怕的 hack。
    git-send-email 应该被纠正,不仅要检查配置或命令行选项是否有值,还要检查它是理智的(即非空的,或者如果我们说的话只是真实的 smtpuser = "0" 不是我们需要担心的支持)。

    对于任何设置都是如此:diff.c#run_diff_cmd() 函数将尝试在 it has detecteddiff.external 值(甚至是 "")时运行外部差异。

    if (!strcmp(var, "diff.external"))
      return git_config_string(&external_diff_cmd_cfg, var, value);
    

    导致:

    if (pgm) {
      run_external_diff(pgm, name, other, one, two, xfrm_msg,
      complete_rewrite);
      return;
    }
    

    所以没有简单的方法来阻止系统范围的外部差异,除非确保这些用户引用不同的 git 系统安装路径(意味着不同的系统设置)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-30
      • 2023-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-11
      • 1970-01-01
      • 2014-12-03
      相关资源
      最近更新 更多