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

в моих скриптах я часто использую библиотеки (мои или другие), которые имеют свои собственные репозитории. Я не хочу дублировать их в моем РЕПО и застрять с обновлением их каждый раз, когда выходит новая версия. Однако, когда кто-то клонирует РЕПО, он все равно должен работать локально и не иметь сломанных ссылок.

есть идеи о том, что я мог бы сделать?

1 ответов


вы можете сделать это с подмодулями в git. В вашем репозитории сделайте:

git submodule add path_to_repo path_where_you_want_it

Итак, если в хранилище библиотеки был URL git://github.com/example/some_lib.git и вы хотели его в lib/some_lib в вашем проекте, вы бы введите:

git submodule add git://github.com/example/some_lib.git lib/some_lib

обратите внимание, что это необходимо сделать из каталога верхнего уровня в вашем репозитории. Так что не cd в каталог, где вы кладете его в первую очередь.

после добавления подмодуля или всякий раз, когда кто-то делает новую проверку вашего репозиторий, вам нужно будет сделать:

git submodule init
git submodule update

и тогда все подмодули, которые вы добавили, будут проверены в той же редакции, что и у вас.

если вы хотите обновить до более новой версии одной из библиотек,cd в подмодуль и потяните:

cd lib/some_lib
git pull

тогда, когда вы делаете git status вы должны увидеть lib/somelib перечислены в измененном разделе. Добавьте этот файл, commit, и вы в курсе. Когда сотрудник вытаскивает эту фиксацию в свой репозиторий, они увидят!--9--> как изменено, пока они не запустятся git submodule update еще раз.