Получить имя раздела и другой атрибут из файла конфигурации, используя git-config - PullRequest
1 голос
/ 11 ноября 2019

.gitmodules обновляется другим скриптом, теперь я пытаюсь найти имя и путь подмодуля, URL которого был изменен, приведенный ниже код работает, но должен быть лучший способ?

#Check if .gitmodules file has changed.
file_changed=$(git diff --name-only HEAD .gitmodules)
if [[ $file_changed = '.gitmodules' ]]; then
   # get all the URLs which were changed.
   urls=($(git diff HEAD .gitmodules | grep "^+\s*url" | cut -d' ' -f3))
   for url in "${urls[@]}"; do
      echo "$url changed"
      submod_string=$(git config -f .gitmodules --get-regexp submodule.*.url | grep $url | cut -d' ' -f1)
      submod_name=$(echo ${submod_string} | cut -d. -f2)
      submod_path=$(git config -f .gitmodules --get-regexp --path submodule.${submod_name}.path | cut -d' ' -f2)
   done
fi

Файл .gitmodules выглядит следующим образом, скажем, если URL-адрес BBB изменился, то мне нужно получить его имя bbb и путь BBB

$ cat .gitmodules
[submodule "aaa"]
    path = AAA
    url = https://blah.com/test/3a
[submodule "bbb"]
    path = BBB
    url = https://blah.com/test/3b
[submodule "ccc"]
    path = CCC
    url = https://blah.com/test/3c

1 Ответ

0 голосов
/ 12 ноября 2019

Вы можете попробовать использовать петлю git submodule foreach.

В ней есть:

  • $name, установленное на имя
  • $sm_path установлен на путь

Это позволит избежать искажения самого .gitmodules.

...