Отслеживание ветки с помощью подмодуля Git, где некоторые клиенты < 1.8.2

В Git 1.8.2 добавлена ​​возможность отслеживать удаленные ветки с помощью субмодуля (что здорово).

# add submodule to track master branch
git submodule add -b master [URL to Git repo];

# update your submodule
# --remote will also fetch and ensure that
# the latest commit from the branch is used
git submodule update --remote

.gitmodules выглядит так:

[submodule "libraries/shared_libraries"]
    path = libraries/shared_libraries
    url = https://user@bitbucket.org/team/shared_libraries.git
    branch = develop

В нашем магазине разработчиков все разработчики используют Git >v1.8.2. Тем не менее, наши QA, промежуточные и производственные серверы работают либо на RHEL 6.5, либо на CentOS с 1.7.1 OOTB.

Эти поля обычно "только для извлечения" и не используются для фиксации кода. Что нам следует ожидать при использовании "git submodule init/update" из наших коробок под управлением 1.7.1? Это рецепт катастрофы или поддерживаемый вариант использования?

1 ответ

Решение

Это рецепт катастрофы или поддерживаемый вариант использования?

Поддерживается тем, что игнорирует .gitmodules отраслевая директива.
git submodule update --init будет просто извлекать субмодуль к его записи gitlink, как записано в индексе основного родительского репо.

Эта запись gitlink будет SHA1 подмодуля, как в последний раз записано родительским репо (но git add + git commit + git push).
Пока оба родительских репозитория были отправлены с этой записью gitlink, а субмодуль был выдвинут с этим SHA1, включенным в его историю, оба клиента могут затем извлекаться.

Другие вопросы по тегам