Настройка GIT

Рейтинг: 0Ответов: 2Опубликовано: 18.10.2014

Ситуация такая: у меня есть репозиторий сайта на удаленном сервере. Мне надо, чтобы когда я заливаю изменения на сервер (push), обновлялась файлы сайта, т.е. сразу на нем показывались внесенные изменения.

Ответы

▲ 1

Вы путаете контроль версий и деплой в одно блюдо.
Изучите capistrano.
Есть deploy hook'и, но это не то, чего вы хотите и к чему стоит привыкать. Это не ftp.

▲ 1

У меня подобное реализовано следующим образом.

Есть сервер с репозиториями, работает через gitolite. На нем же расположенны репозитории с dev версиями сайтов. По простенькому хуку post-receive на баше, выполняющему следующую команду:

/var/.../hook_git.php "$GL_REPO_BASE" "$GL_REPO"

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

git fetch --all
git reset --hard origin/master

Итого имеем 4 репозитория на каждый проект:

  1. Локальный.
  2. Основной (в который пушим из локального).
  3. Dev-репозиторий (в него автоматом подтягиваются изменения из основного по хукам).
  4. Продакшн (в него ручками).

И все работает по феншую. Т.е. в non-bare репозиторий мы не пушим, а подтягиваем изменения из основного репозитория. Всегда имеем актуальную дев версию сайта.

Можно это все немного проапгрейдить. Например, комиты в dev ветку подтягивать на dev версию, master - на продакшн. Но я придерживаюсь мнения, что последнее лучше делать руками (по крайней мере для рядовых проектов, где не нужны адские системы деплоя).