• J
    Merge branch 'js/empty-config-section-fix' · 4f4d0b42
    Junio C Hamano 提交于
    "git config --unset a.b", when "a.b" is the last variable in an
    otherwise empty section "a", left an empty section "a" behind, and
    worse yet, a subsequent "git config a.c value" did not reuse that
    empty shell and instead created a new one.  These have been
    (partially) corrected.
    
    * js/empty-config-section-fix:
      git_config_set: reuse empty sections
      git config --unset: remove empty sections (in the common case)
      git_config_set: make use of the config parser's event stream
      git_config_set: do not use a state machine
      config_set_store: rename some fields for consistency
      config: avoid using the global variable `store`
      config: introduce an optional event stream while parsing
      t1300: `--unset-all` can leave an empty section behind (bug)
      t1300: add a few more hairy examples of sections becoming empty
      t1300: remove unreasonable expectation from TODO
      t1300: avoid relying on a bug
      config --replace-all: avoid extra line breaks
      t1300: demonstrate that --replace-all can "invent" newlines
      t1300: rename it to reflect that `repo-config` was deprecated
      git_config_set: fix off-by-two
    4f4d0b42
config.c 77.6 KB