На нашем промежуточном сервере у нас есть пустое хранилище, которое отправляется на. У него есть ловушка post-receive, которая затем выполняет все наши действия по развертыванию, которые извлекаются в отдельное рабочее дерево (в котором нет папки git).
Итак, установка такова:
голое репо на
/var/www/apps/e_learning_staging/elearning_resource.git
рабочее дерево на
/var/www/apps/e_learning_staging/www
Эта настройка в настоящее время работает нормально. Тем не менее, я добавил в проект четыре субмодуля (которые на самом деле используют только два отдельных репозитория - каждый дублируется в двух местах в проекте). Все репозитории субмодулей находятся на другом сервере.
Все они перечислены в конфигурационном файле голого репозитория, который выглядит следующим образом:
[core]
repositoryformatversion = 0
filemode = true
bare = true
logallrefupdates=true
worktree = /var/www/apps/e_learning_staging/www
gitdir = /var/www/apps/e_learning_staging/elearning_resource.git
[submodule "public/assets/players/virgin_lesson_viewer"]
url = user@another.server.com:/home/charangadh/source_code/git/virgin_lesson_viewer.git
[submodule "public/assets/players/virgin_lesson_viewer_staging"]
url = user@another.server.com:/home/charangadh/source_code/git/virgin_lesson_viewer_staging.git
[submodule "public/assets/dvd_files/Virgin_lesson_viewer"]
url = user@another.server.com:/home/charangadh/source_code/git/virgin_lesson_viewer.git
[submodule "public/assets/dvd_files/Virgin_lesson_viewer_staging"]
url = user@another.server.com:/home/charangadh/source_code/git/virgin_lesson_viewer_staging.git
Если бы папка git находилась внутри рабочего дерева, это было бы достаточно просто - я бы просто сделал
git submodule add user@another.server.com:/home/charangadh/source_code/git/virgin_lesson_viewer.git public/assets/dvd_files/Virgin_lesson_viewer
для каждого из подмодулей, затем выполните «git submodule update», чтобы обновить их. Но я не могу понять, как это сделать из отдельной папки git. Кто-нибудь может привести меня в порядок?