Вы можете изучить поддержку подмодуля Git. Подмодуль позволяет встроить один репозиторий git в другой репозиторий git. Существуют альтернативные решения подобного рода вещей, но я сам ими не пользовался.
Пример может выглядеть так:
$ git clone git://github.com/username/project.git
$ cd project
$ git submodule add git://github.com/username/framework.git framework
$ git commit -m "added framework submodule"
Если вы клонируете репозиторий с подмодулями, вам необходимо использовать параметр --recursive
:
$ git clone --recursive git://<repository-with-submodules>.git
Или, как вариант, вы можете регулярно клонировать, а затем запускать:
$ git submodule init
$ git submodule update
Прочтите связанный документ (и git submodule --help
) для получения дополнительной информации.
Если в подмодуль вносятся изменения, вы вносите их следующим образом:
# first update the submodule just like any other git repository
$ cd project/framework
$ git pull
# now you have to record the new commit in the parent repository
$ cd ..
$ git commit -m "updated framework submodule"
Последний шаг необходим, потому что git хранит запись о конкретном коммите, связанном с данным подмодулем (так что, когда кто-либо клонирует родительский модуль, он получит эту версию подмодуля, а не его самую последнюю версию, которая могла бы претерпели критические изменения, которые могут помешать его работе с родительским репозиторием должным образом). Поэтому, если вы обновляете подмодуль, вам нужно записать новый коммит в родительский.
Если вы сделаете изменения в framework
подмодуле, вы снова просто git push
их, как и в любом другом репозитории. Затем вам нужно будет зафиксировать новую ревизию в родительском модуле.
person
larsks
schedule
26.04.2012