Загрузка...

Git. Submodule system

Git Submodule - что это, как использовать. И когда нужно применять.
git

Подмодули применяются, когда необходимо в рамках одного git репозитория добавить другой git репозиторий, в качестве внутренней/составной части.
Применять такой подход рекомендуется только когда нет альтернатив. То есть нет возможности использовать пакетный менеджер(npm/composer) или аналогичный инструмент.
Удобно использовать при работе с WordPress, когда используется стандартная структура проекта, без подключения composer`а. А плагины устанавливаются из gihub репозиториев.

Добавление подмодулей.

Для добавления нового подмодуля используйте команду git submodule add

$ git submodule add https://github.com/chaconinc/DbConnector
Cloning into 'DbConnector'...
remote: Counting objects: 11, done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 11 (delta 0), reused 11 (delta 0)
Unpacking objects: 100% (11/11), done.
Checking connectivity... done.

Во-первых, вы увидите новый файл .gitmodules. Это конфигурационный файл, в котором хранится соответствие между URL проекта и локальным подкаталогом, в который вы его выкачали:

[submodule “DbConnector”]
path = DbConnector
url = https://github.com/chaconinc/DbConnector

Клонирование проекта с подмодулями

Клонирование проекта с подмодулями. Когда вы клонируете такой проект, по умолчанию вы получите каталоги, содержащие подмодули, но ни одного файла в них не будет:

$ git clone https://github.com/chaconinc/MainProject

Каталог DbConnector присутствует, но он пустой. Вы должны выполнить две команды: git submodule init — для инициализации локального конфигурационного файла, и git submodule update — для получения всех данных этого проекта и извлечения соответствующего коммита, указанного в основном проекте.
Вместо этого можно использовать, одну команду:

git clone --recurse-submodules https://github.com/chaconinc/MainProject

Установка зависимостей, при разворачивании проекта.

Установка зависимостей, при разворачивании проекта.
`git submodule sync --recursive`    
`git submodule update --init --recursive`   
`git submodule update --remote --rebase`

Более подробную информацию можно прочитать тут.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *