Skip to content
  • Jeff King's avatar
    pager: stop loading git_default_config() · 4babb839
    Jeff King authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    In git_pager(), we really only care about getting the value
    of core.pager. But to do so, we use the git_default_config()
    callback, which loads many other values. Ordinarily it
    isn't a big deal to load this config an extra time, as it
    simply overwrites the values from the previous run. But it's
    a bad idea here, for two reasons:
    
      1. The pager setup may be called very early in the
         program, before we have found the git repository. As a
         result, we may fail to read the correct repo-level
         config file.  This is a problem for core.pager, too,
         but we should at least try to minimize the pollution to
         other configured values.
    
      2. Because we call setup_pager() from git.c, basically
         every builtin command _may_ end up reading this config
         and getting an implicit git_default_config() setup.
    
         Which doesn't sound like a terrible thing, except that
         we don't do it consistently; it triggers only when
         stdout is a tty. So if a command forgets to load the
         default config itself (but depends on it anyway), it
         may appear to work, and then mysteriously fail when the
         pager is not in use.
    
    We can improve this by loading _just_ the core.pager config
    from git_pager().
    
    Signed-off-by: default avatarJeff King <peff@peff.net>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    4babb839