Разработка и поддержка сайта с помощью Git

Удобная альтернатива FTP для выгрузки сайта на действующий (продакшн) сервер с автоматическими обновлениями из репозитория Cotonti.

Данная статья будет полезна тем разработчикам, кто стремиться добиться одной из следующих целей:

  • Автоматическое получение обновлений с официального сайта Cotonti и загрузка их на свой сайт без необходимости проверки какие файлы изменились и загрузки их через FTP.
  • Совместная разработка своего сайта без боязни потерять чьи-либо изменения.
  • Синхронизация файлов на нескольких сайтах.
  • Построить полноценную цепочку разработки с помощью Git.

Требования:

  • SSH доступ на ваш веб-сервер.
  • Установленный Git на компьютере где ведется разработка и на вашем веб-сервер.

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

Внимание: на случай если что-то пойдет не так при синхронизации через Git лучше иметь при себе архив (бекап) рабочей копии. Поэтому убедитесь, что вы сделали копию перед любыми экспериментами или применением данных инструкций.

Примеры команд даны применительно к Unix-подобным системам. Для использования их в Windows среде, возможно, потребуется установить дополнительное ПО.

#1. Сценарий 1: Переносим код из репозитория Cotonti в локальную копию для разработки, а затем на рабочий сайт

Для создания локальной копии (для разработки) давайте скопируем (клонируем) файлы из официального Git репозитория Котонти. Термин клонирование употреблен здесь как прямой перевод термина «clone» используемого в системе Git. Для клонирования в локальную директорию, выбираем ее (использую команду `cd`), а затем используем следующее:

git clone -o cotonti git://github.com/Cotonti/Cotonti.git .

Опция `-o` отвечает за то, что будет использован репозиторий с именем `cotonti`, вместо стандартного (по умолчанию) `origin`.Точка в конце строки указывает на то, что копия будет размещена в текущем каталоге (именно для этого каталог надо выбрать заранее). При необходимости можно указать прямой путь в к необходимой папке. В результате мы получим последнюю (самую свежую) копию ветки `Siena/master`.

Если вы используете ветку `Genoa`, то команда будет выглядеть так:

git clone -o cotonti -b genoa git://github.com/Cotonti/Cotonti.git .

Ключ `-b` задает имя ветки источника. По умолчанию это master (siena).

После клонирования (создания локальной копии) вы можете легко переключиться на любую конкретную версию Cotonti. Каждая отдельная (выпускавшаяся) версия в репозитории описана собственным тегом, вида "cotonti-x.y.z". Для переключения на конкретную ветку используем это тег:

git checkout cotonti-x.y.z

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

Если вы готовы создать репозиторий на своем рабочем сервере, и синхронизировать вашу локальную копию с сервером, используйте следующие команды:

ssh -l your_login example.com
mkdir site.git && cd site.git
git init --bare
echo -e "#!/bin/sh\nGIT_WORK_TREE=/path/to/htdocs git checkout -f" > hooks/post-receive
chmod +x hooks/post-receive

Первая команда подключит вас к вашему серверу по SSH (настройка SSH выходит за рамки данной инструкции, но вы без труда найдете описания в интернете). Строки 2-3 создают отдельную папку для служебных файлов Git и инициализаруют новый репозиторий в этой папке. Строка 4 создает скрипт, который будет автоматически применять изменения для вашего сайта. Замените `/path/to/htdocs` строкой с актуальным путем к файлам вашего сайта. 5-я строка делает этот скрипт исполняемым.

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

git remote add site ssh://your_login@example.com/path/to/site.git
git push site master

Замените имя ветки `master` на  `genoa` (или другую) актуальную для вас.

Теперь вы можете использовать команды для синхронизации описанные в одном из следующих разделов.

#2. Сценарий 2: копируем файлы с сайта в локальный репозиторий, затем синхронизируем с репозиторием Cotonti 

Для использования этого сценария, полагаем, что вы уже настроили и инифиализировали репозиторий `site.git` на вашем веб сервере (см. предыдущий раздел). Если репозиторий был инициализирован, но вы не добавляли никаких файлов для мониторинга изменений в Git, тогда необходимо перейти в каталог файлов сайта и выполнить команду `git add`:

ssh -l your_login example.com
cd /path/to/htdocs
GIT_DIR=/path/to/site.git git add .
GIT_DIR=/path/to/site.git git commit -q -m "Added site files"

Примечание: использование переменной GIT_DIR необходимо при вызове команд Git на червере, потому, что файлы Git храняться отдельно от файлов самого сайта.

После того как выш удаленнй репозиторий `site.git`  заполнен и имеет актуальную копию, выши коллеги по разработке могут клонировать репозиторий на свои локальные ПК:

git clone -o site ssh://user2_login@example.com/path/to/site.git

Укажите аргумент `-b genoa`, если импользуете ветку Genoa. Еще можно внести основной репозиторий в список удаленных:

git remote add cotonti git://github.com/Cotonti/Cotonti.git

Это позволит боле просто использовать команды отправки (pull) и получения (push) изменений с основного сервера (конкретные команд приведены в следующем разделе)..

#3. Обновление локальной копии и сайта

Если вы настроили локальный и рабочий репозиторий (как описано выше) вы можете использовать команды описанные в разделе ниже.

Примечение: если используете версию `Genoa` замените имя ветки с `master` на `genoa` во всех приведенных комендах.

Для обновления локальной копии до последней актуальной версии Cotonti (получение последних изменений) используйте:

git pull cotonti master

Для применения текущих изменений к вашему сайту:

git push site master

Для получения с рабочего сайта (вашего веб-сервера) изменений внесенных разработчиками из вашей команды:

git pull site master

 

#4. Ссылки по теме

  • Using Git to manage a website - статья вдохновлявшая меня при написании этой [ENG].
  • Git Manual - официальное руководство Git [ENG].
  • Help.GitHub - руководство по использований GitHub [ENG].
  • Pro Git - отдичное руководство по Git переведенное на множество языков [РУС].


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