Как создать Git-репозиторий и настроить автообновление из него кода сайта?
На сегодня Git является одной из самых популярных систем управления версиями. Типичное использование Git в рамках хостинга заключается в создании репозитория (хранилища) на сервере для получения актуальной версии кода сайта для непрерывной разработки, выгрузки кода обратно на сервер, а также размещения нового кода на рабочем сайте (вручную или же в автоматическом режиме).
Репозиторий может быть создан средствами панели управления хостингом (CPanel) в пункте “Git™ Version Control” раздела “Файлы”.
В указанном разделе перечислены уже имеющиеся у пользователя репозитории, а также присутствует возможность создания нового хранилища. В процессе создания необходимо последовательно указать, будет ли новый репозиторий копией одного из имеющихся или же пустым (если выбран вариант клонирования, нужно ввести ссылку на сторонний репозиторий), путь к папке с хранилищем и имя нового репозитория.
Для нового репозитория настройки будут выглядеть примерно так:
После успешного создания репозитория вы получите краткую памятку по основным командам для работы с ним.
Рассмотрим также один из вариантов автоматической выгрузки кода на существующий на хостинге сайт при обновлении данных в репозитории. Для этого в репозитории в корневой директории проекта нужно создать файл .cpanel.yml со следующим содержимым:
---
deployment:
tasks:
- export REPOPATH=/home/yourdoma/repo/*
- export SITEPATH=/home/yourdoma/public_html/
- /bin/rsync -rav --exclude '.git' --exclude '.cpanel.yml' --del $REPOPATH $SITEPATH
где в переменной REPOPATH указывается полный путь к папке с репозиторием, а в SITEPATH -- путь к папке с сайтом (обратите внимание на символ * в конце пути, который необходим для синхронизации с корректными правами только файлов репозитория).
После этого при каждом обновлении данных в репозитории cPanel будет автоматически вызывать указанные команды через внутренний API (путем обращения к скрипту .git/hooks/post-receive), и актуальная версия кода из репозитория попадет в папку с файлами вашего сайта.
При такой настройке возможно принудительное обновление файлов сайта в любое время – из последней опубликованной в Git версии (например, если нарушена целостность файлов на сайте, но в репозитории есть их эталонная копия). Для этого требуется перейти в настройки нужного репозитория (нажать на кнопку “Управлять” справа от имени хранилища в списке имеющихся) и на вкладке “Pull or Deploy” нажать на кнопку “Deploy HEAD Commit”.