Parse git config –list

Quiero analizar git config --list .

Primero creo que puedo analizar esto para separar el object entre puntos. P.ej

 color.ui=auto branch.master.remote=upstream branch.master.merge=refs/heads/master # => { core: { ui: auto }, branch: { master: { remote: upstream, merge: refs/heads/master }} } 

Pero a veces el nombre tiene un punto 🙁

Quiero hacer abajo:

 [email protected]:.pushinsteadof=https://gist.github.com/ branch.chore/foo.bar.baz.remote=upstream branch.chore/foo.bar.baz.merge=refs/heads/master # => { url: { [email protected]: { pushinsteadof: https://gist.github.com/ } }, branch: { chore/foo.bar.baz: { remote: upstream, merge: refs/heads/master } } } 

¿Cómo lograr esto? ¿Debería volver a implementar git-config https://git-scm.com/docs/git-config#FILES e include sección? Quiero cambiar un separador de sección.

Por lo que veo en la página man de git config , el primer y el último elemento key no tienen puntos en ellos.

Por lo tanto, en branch.chore/foo.bar.baz.remote , puede search el primer '.' y última '.' (dándole branch y remote ). Todo en el medio es un nombre key.