Git hook, чтобы обновить суперпроект при смене подмодуля? - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть три репозитория git: A, B и C.C - это суперпроект, включающий подмодули A и B, отслеживающие соответствующую главную ветвь каждого подмодуля.

Когда основная ветвь A или B изменяется, я должен сделать следующее вC:

git submodule update --remote
git add A
git add B
git commit -m "Update submodule A or B"
git push

На этом этапе выполняется автоматическая сборка и развертывание из C.

Я ищу способы упростить этот процесс.В идеале любой коммит в основную ветвь A или B будет вызывать ловушку для обновления, фиксации и перехода к C.Есть какие-нибудь идеи, как этого добиться?

Редактировать: Если есть особенность, специфичная для поставщика, о которой я должен знать, я использую DevOps Azure для хостинга git и конвейеры Azure для процесса сборки и развертывания.

1 Ответ

0 голосов
/ 27 февраля 2019

Вы можете использовать git post-commit hook , когда вы делаете коммит в подмодулях, ловушка будет выполняться и будет выполнять команды.

  1. Перейти к каждомуСубмодульный репо.
  2. Создать файл .git / hooks / post-commit со следующим содержимым:

    #!/bin/sh
    
    branch="$(git rev-parse --abbrev-ref HEAD)"
    
    if [ "$branch" = "master" ]; then
      cd {super repo location}
      git submodule update --remote
      git add A
      git add B
      git commit -m "Update submodule A or B"
      git push
    fi
    
  3. Сделать этоисполняемый файл (не требуется в Windows ):

    $ chmod +x .git/hooks/pre-commit
    
...