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

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

это похоже на то, что это должен быть очень простой и распространенный вариант использования. Я что-то упускаю?

наверное ssh в мой сервер и вытащить их вручную, но я хотел бы полностью автоматизировать это, так что если я обновлю подмодуль ссылка в моем РЕПО эти изменения будут отражены при развертывании.

2 ответов


хорошо, я возьму удар на это за 50 дополнительных очков;)

вот шаги, которые я следовал:

1.) Создайте приложение php-5.3 на OpenShift на клоне на локальную машину.
2.) Создайте публичный репозиторий git на github для использования в качестве подмодуля.
3.) Добавьте репозиторий github в приложение OpenShift с помощью следующих команд, убедитесь, что вы используете url https вместо git@ url, или вы получите проблемы с закрытым ключом, когда OpenShift Online пытается проверить суб-модуль.

 cd into your locally cloned openshift application directory  
 git submodule add https://github.com/developercorey/somesubmodule.git ./directory_name
 git add .
 git commit -am "adding a submodule"
 git push

Если вы не видите никаких ошибок в вашем git push, то все должно было работать правильно. если вы видите такую ошибку

remote: Host key verification failed.
remote: fatal: Could not read from remote repository.
remote: 
remote: Please make sure you have the correct access rights
remote: and the repository exists.

это означает, что вы использовали git@ url вместо HTTPS url для добавления подмодуля git или пытаетесь получить доступ к частному репозиторию. Теперь вы можете ssh в свое приложение, используя rhc ssh command и cd в каталог ~/app-root/runtime/repo, и вы должны увидеть свой подмодуль каталог с файлами из этого хранилища внутри.

Если это не сработает для Вас, пожалуйста, дайте мне знать, каков выход вашего git push, и мы пойдем оттуда.


для родительского репозитория (который содержит подмодули) вам нужно только нажать родительское РЕПО: оно включает gitlink (специальные записи в индексе) ссылка на правый SHA1 для каждого подмодуля.

после нажатия, после получения крючок может вызвать:

git submodule update --init --recursive

это обновит каждый подмодуль справа SHA1.

крюк после получения находится в Родительском голые РЕПО: /path/to/parent.git/hooks/post-receive с:

#! /bin/bash
cd /path/to/non-bare/parent
git --git-dir=/path/to/parent.git checkout 
git --git-dir=/path/to/parent.git submodule update --init --recursive