Каковы наилучшие практики для представления зависимости проекта git от локального пакета с его собственным репозиторием git?

У меня есть локальная зависимость пакета со своим собственным git-репозиторием, и у меня есть проект, который зависит от этого каталога. Каков наилучший способ синхронизации репозитория проекта и его локального репозитория пакетов в синхронизации?

Один из вариантов - объединить пакет как подпроект, как описано здесь:

Как перенести Git-проекты в один проект с подпроектами

Однако, если я внесу изменения в зависимость от пакета, мне понадобится объединить их обратно. Кроме того, в итоге будет поддерживаться две зеркальные версии пакета. Это лучшая практика в этом сценарии или есть лучшее решение?

В качестве альтернативы, я мог бы иметь символическую ссылку на пакет, но я не уверен, что лучше всего, когда у проекта есть суб-репозиторий git, который символически связан.

1 ответ

Решение

Для исходных зависимостей у вас есть выбор между:

И то, и другое допускает эволюцию в субрепо, но если вы не вносите постоянные изменения, я предпочитаю субмодуль: он позволяет ссылаться на фиксированный SHA1 другого репо.
См. Больше в разделе " Различия между подмодулем git и поддеревом".

Подотчет упоминается как gitlink, специальная запись в индексе родительского репо. Вы по-прежнему можете совершать коммиты в этом подпреступлении, пока вы фиксируете и толкаете их, затем переходите на один уровень вверх к родительскому репо, добавляете и фиксируете новый SHA1 (gitlink) и тоже толкаете его.

Вы можете ссылаться на подмодуль, чтобы следовать за веткой (то есть -b master часть)

Любой другой проект, ссылающийся на тот же субмодуль, должен был бы сделать:

git submodule update --remote

Они будут получать последние из этой ветви (и должны будут добавить и зафиксировать новый SHA1, полученный в результате выборки подмодуля)

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