да, это можно сделать, и да, на мой взгляд, это хорошая практика. Вот наш вариант использования:
Я работаю в небольшой группе разработчиков, которая поддерживает несколько сайтов для разных групп людей.
На каждом сайте есть несколько сред (бета-версия, которая является «песочницей» для всех разработчиков), поэтапная подготовка, на которой мы демонстрируем изменения в владельцах контента, прежде чем начать работу, обучение, которое использует наш обучающий чувак для обучения новых менеджеров контента и вживую. где каждый идет, чтобы потреблять контент).
Мы контролируем развертывание во всех этих средах через перехваты после получения на основе имен веток. У нас может быть ветвь с «оперативным исправлением», которая нигде не разворачивается, но когда мы объединяем ее, например, с «бета» веткой, она автоматически развертывается на бета-сервере, чтобы мы могли проверить взаимодействие нашего кода с кодом других разработчиков.
Существует множество способов сделать это, и мы настраиваем ваши ssh-ключи, чтобы git-сервер мог подключиться к вашему веб-серверу и выполнить git pull. Это означает, что вы должны добавить открытый ключ для git @ gitserver в свой файл authorit_keys git @ webserver и наоборот, затем на хуке post-receive вы анализируете ветвь и пишете для нее оператор case, например, так:
read line
echo "$line" | . /usr/share/doc/git-core/contrib/hooks/post-receive-email
BRANCH=`echo $line | sed 's/.*\///g'`
case $BRANCH in
"beta" )
ssh git@beta "cd /var/www/your-web-folder-here; git pull"
;;
esac
Надеюсь, это поможет.