Подмодульная ветка Git на основе условия - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь изменить свою модель git на ветки master и develop. У меня есть подмодуль, который также имеет ветки master и develop. Мой .gitmodules сейчас выглядит примерно так

[submodule "foo"]
    path = foo
    url = git.bar.com/foo.git

Когда мне нужно получить изменения из ветви develop подмодуля в ветви develop моего основного репозитория, я делаю что-то вроде

cd foo
git checkout develop
git pull origin
cd ..
git commit
git push

Принимая во внимание, что в ветви master я могу сделать git submodule update --remote, чтобы получить последний коммит из ветви master подмодуля. Я хотел бы иметь возможность сделать то же самое для develop филиалов.

Есть ли способ условно установить ветку в .gitmodules? Я знаю, я могу навсегда установить ветку с

[submodule "foo"]
    path = foo
    url = git.bar.com/foo.git
    branch = develop

Но тогда это переместит проблему на master

1 Ответ

0 голосов
/ 03 апреля 2019

В ветке master супер проекта сделай это

[submodule "foo"]
    path = foo
    url = git.bar.com/foo.git
    branch = master

В ветке develop из супер:

[submodule "foo"]
    path = foo
    url = git.bar.com/foo.git
    branch = develop

Добавьте post-checkout крючок к супер-проекту, который переключает филиал на подмодуль:

#!/bin/sh

# post-checkout hook that switch branch on submodule

prev_HEAD="$1"
new_HEAD="$2"
new_branch="$3"

if [ "$new_branch" = 1 ]; then
   git submodule update
fi
...