Git: обновлять сайт при загрузке в удаленный репозиторий? - PullRequest
4 голосов
/ 06 января 2011

У меня есть веб-сайт, который я хотел бы обновлять всякий раз, когда я отправляю в удаленный репозиторий. Я прихожу из svn-фона и все еще пытаюсь понять git.

Сейчас я сделал следующее:

  • Установите репозиторий Git на моем локальном компьютере, на котором находится веб-сайт.
  • Клонировал (пустой) репозиторий на мой веб-сервер.

Теперь я немного застрял. Я могу отправить изменения в свой пустой репозиторий на сервере, но я понятия не имею, как извлечь рабочую копию репозитория в моем каталоге www и автоматически обновлять ее всякий раз, когда я отправляю свой локальный репозиторий на сервер. Вероятно, мне понадобится скрипт-крюк, верно?

Смежный вопрос, Развертывание PHP с использованием Git , частично отвечает на мой вопрос, но я хотел бы знать, что на самом деле делает скрипт.

Ответы [ 2 ]

6 голосов
/ 06 января 2011

Это сработало для меня, это может сработать для вас: Рабочий процесс Git, ориентированный на веб-сайты

4 голосов
/ 28 мая 2011

Я нашел очень хорошее (и элегантное) решение для меня на веб-сайте Caius Theory

В основном оно начинается с чистого репозитория и меняет рабочее дерево на папку веб-сервера.После этого он использует хук post-receive для обновления рабочего дерева после каждого полученного push-запроса.Изящная и простая процедура!

В дополнение к настройке в этой статье я добавил каталог с «мягкой привязкой» .git из папки сайта в папку репозитория git:

ln -s /home/caius/git/somesite.git/ /home/caius/vhosts/somesite.com/htdocs/.git

Таким образом, я могу оформить другую ветку на веб-сервере, войдя в нее и используя «git checkout» в папке сайта!

Я также использовал небольшую модификацию Python-Script «ygit-push»-all.py "из здесь , чтобы обновить несколько моих машин, на которых все работают с одним и тем же кодом инфраструктуры с использованием разных файлов конфигурации.Вы даже можете настроить ветку для каждого сервера (например, Demo / Development).

Кроме того, я добавил следующие псевдонимы в мой глобальный конфигурационный файл git:

[alias]
    push-all = !ygit-push-all.py
    check-all = !sh -c 'git branch -r -v | grep master | awk \"{ print \\$1, \\$2 }\"'

git push-all обновит all мои удаленные местоположения

git check-all покажет мне обороты, на которых находится каждая удаленная master ветка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...