Как обновить раздел файла конфигурации, используя git config? - PullRequest
0 голосов
/ 24 октября 2018

Мне нужно добавить branch = super_foo к существующему разделу superproject в файле test_config:

$ cat .test_config
[superproject "mysuper"]
    url = https://server.com/test/mysuper

[submodule "tsn-inc"]
    url = url = https://server.com/test/foo_s
    branch = foo

Это работает:

git config -f .test_config --add superproject.mysuper.branch super_foo

Но «mysuper» не являетсяизвестное значение, поэтому я попробовал ниже, так как будет только один раздел суперпроекта.

git config -f .test_config --add superproject.*.branch super_foo

он добавил новый раздел, как показано ниже:

[superproject "*"]
    branch = super_foo

Вместо этого я хочу добавить ветку всуществующий раздел суперпроекта, есть ли способ сделать это?

Ответы [ 2 ]

0 голосов
/ 24 октября 2018
super_name=$(git config -f .test_config --name-only --get-regexp superproject | cut -d. -f2)

Это дает мне имя супер проекта.

git config -f .test_config --add superproject.$super_name.branch super_foo

Это сделало это.

0 голосов
/ 24 октября 2018

При написании конфигурации git config хочет получить точный ключ - здесь нет шаблонов, здесь не разрешено регулярное выражение.Таким образом, вы должны как-то вывести часть mysuper.

Вы можете извлечь список из superproject разделов:

git config --name-only --get-regex '^superproject\.' | sed  -r 's/^[^.]+\.(.*)\.[^.]+$/\1/' | sort -u

Если вы знаете, что существует ровно один superproject разделв вашем конфиге или просто интересуетесь первым, тогда вы можете установить значение в скрипте следующим образом:

subsection=$(
    git config --name-only --get-regex '^superproject\.' |
    sed -rn '1,1s/^[^.]+\.(.*)\.[^.]+$/\1/p'
)
git config super --add "superproject.$subsection.branch" super_foo
...