Мне назначили проект, в котором я буду развивать бэкэнд, а другой человек будет заниматься разработкой интерфейса. Существует требование, чтобы разработчик интерфейса не имел доступа к серверу разработки, а также код проекта. Итак, мы решили создать другой репозиторий только для интерфейса.Как я могу поместить god subodule автоматически?
Проблема заключается в том, что я не знаю, как заставить подмодуль немедленно удаляться с удаленного сервера, когда что-то совершено для удаленного репо. Мне нужно, чтобы разработчик зафиксировал и сразу увидел изменения в интерфейсе.
Я читал про git hooks, и я обнаружил, что могу это сделать, используя post-receive
hook. Однако, похоже, это не работает. Вот что я сделал:
- из корневого каталога основного проекта, я нашел следующий каталог /.git/modules/submodule-directory/hooks
- Я создал
post-receive
файл с исполняемым разрешения допускается. Содержание
post-receive
файла:#!/bin/sh git pull
Выдвинутого изменение от моей локальной машины в подмодуле репо, но ничего не произошло.
Что я делаю неправильно?
EDIT: Я собираюсь уточнить некоторые моменты, касающиеся моего вопроса.
У меня есть два репозитория: «Основной» репозиторий, который представляет собой весь проект; и другой репозиторий, который является внешним видом (представления, активы и т. д.). Назовем это хранилище «frontend».
В мой основной репозиторий я добавил frontend repo как подмодуль, расположенный внутри/подмодулей/frontend. Таким образом, сторонние сторонние разработчики не смогут ничего увидеть о реальном проекте. Они будут видеть только то, над чем они работают.
Это действительно отлично работает с точки зрения контроля доступа, и я могу легко отслеживать прогресс разработки frontend отдельно от проекта. Но есть одна проблема, которую я не знаю, как это сделать.
Наш проект имеет два отдельных сервера - сервер разработки и производственный сервер. Сервер разработки всегда должен находиться в главной ветке как для основного репо, так и для внешнего репо. Таким образом, как внешняя команда, так и бэкэнд-команда смогут увидеть их обновления. Несмотря на то, что команда frontend в основном работает с шаблонами, шаблоны имеют доступ к данным, которые хранятся в базе данных, и используют множество материалов, которые интегрированы в бэкэнд (например, модели).
Для того, чтобы эта «система» работала, мне нужно, чтобы ретрансляция frontend всегда извлекалась и объединялась всякий раз, когда в «frontend» совершалась новая фиксация. удаленный репо. Другими словами, если внешняя команда делает git commit
и git push
, подмодуль «frontend» репо в сервере разработки должен немедленно git pull
. Итак, когда участники фронтэнда проверяют свои вещи, они сразу видят последние изменения.
Я читал, что post-receive
крюк может это сделать, но мне нужен этот крюк, чтобы существовать только для субмодуля. Итак, после некоторого рытья я обнаружил, что все подмодульные крючки существуют в /.git/modules/submodules/frontend/hooks
.Итак, я создал post-receive
крюк в этой директории со следующим кодом:
#!/bin/sh
git pull
Но это не сработало. Мой вопрос заключается в том, как заставить крючки работать с post-receive внутри подмодуля?
Я знаю, что маршрут, который я принял, далек от совершенства, но это единственный способ, который имеет для меня смысл, когда дело доходит до того, что разработчики могут получить доступ только к одному каталогу, не имея доступа к серверу разработки.
Надеюсь, это имеет смысл.
Руководство «git pull» может дать вам подсказку. – renemilk
. Еще одна предел точности: например, о сервере разработки, вы нажимаете из своего локального хранилища, где находится? в репозиторий '--bare'? непосредственно в каталог, используемый в разработке? – Asenar
Я нажимаю на репозиторий '--bare', расположенный в Gitlab.com – Gasim