解析git config --list

时间:2017-11-05 11:58:53

标签: git config

我想解析git config --list

首先我想我可以解析这个在dot之间分隔的对象。 E.g。

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

但有时名字有点:(

我想在下面做:

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

如何实现这一目标? 我应该重新实现git-config https://git-scm.com/docs/git-config#FILES并包含部分吗? 我想更改一个部分分隔符。

1 个答案:

答案 0 :(得分:1)

根据我从{{3}}看到的内容,键的第一个和最后一个元素中没有点。

所以在int中,您可以搜索第一个'。'最后'。' (给你branch.chore/foo.bar.baz.remotebranch)。中间的一切都是一个关键的名字。