Как создать Git-репозиторий и настроить автообновление из него кода сайта?

На сегодня Git является одной из самых популярных систем управления версиями. Типичное использование Git в рамках хостинга заключается в создании репозитория (хранилища) на сервере для получения актуальной версии кода сайта для непрерывной разработки, выгрузки кода обратно на сервер, а также размещения нового кода на рабочем сайте (вручную или же в автоматическом режиме).

Репозиторий может быть создан средствами панели управления хостингом (CPanel) в пункте “Git™ Version Control” раздела “Файлы”.

image_Git1.png

В указанном разделе перечислены уже имеющиеся у пользователя репозитории, а также присутствует возможность создания нового хранилища. В процессе создания необходимо последовательно указать, будет ли новый репозиторий копией одного из имеющихся или же пустым (если выбран вариант клонирования, нужно ввести ссылку на сторонний репозиторий), путь к папке с хранилищем и имя нового репозитория.

Для нового репозитория настройки будут выглядеть примерно так:

image_Git:.png

После успешного создания репозитория вы получите краткую памятку по основным командам для работы с ним.

Рассмотрим также один из вариантов автоматической выгрузки кода на существующий на хостинге сайт при обновлении данных в репозитории. Для этого в репозитории в корневой директории проекта нужно создать файл .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”.

image_Git4.png