Skip to content
  • Jeff King's avatar
    config: silence warnings for command names with invalid keys · 9e9de18f
    Jeff King authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    When we are running the git command "foo", we may have to
    look up the config keys "pager.foo" and "alias.foo". These
    config schemes are mis-designed, as the command names can be
    anything, but the config syntax has some restrictions. For
    example:
    
      $ git foo_bar
      error: invalid key: pager.foo_bar
      error: invalid key: alias.foo_bar
      git: 'foo_bar' is not a git command. See 'git --help'.
    
    You cannot name an alias with an underscore. And if you have
    an external command with one, you cannot configure its
    pager.
    
    In the long run, we may develop a different config scheme
    for these features. But in the near term (and because we'll
    need to support the existing scheme indefinitely), we should
    at least squelch the error messages shown above.
    
    These errors come from git_config_parse_key. Ideally we
    would pass a "quiet" flag to the config machinery, but there
    are many layers between the pager code and the key parsing.
    Passing a flag through all of those would be an invasive
    change.
    
    Instead, let's provide a config function to report on
    whether a key is syntactically valid, and have the pager and
    alias code skip lookup for bogus keys. We can build this
    easily around the existing git_config_parse_key, with two
    minor modifications:
    
      1. We now handle a NULL store_key, to validate but not
         write out the normalized key.
    
      2. We accept a "quiet" flag to avoid writing to stderr.
         This doesn't need to be a full-blown public "flags"
         field, because we can make the existing implementation
         a static helper function, keeping the mess contained
         inside config.c.
    
    Signed-off-by: default avatarJeff King <peff@peff.net>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    9e9de18f