August 31, 2012

Git. Публикация изменений на тестовый сервер.

При разработке веб-приложений сталкиваюсь иногда со сложностью синхронизации данных на локальном компьютере и тестовом сервере (не все можно протестить на локалке). Конечно можно решить эту проблему применив старый добрый rsync, но сегодня я расскажу как можно для эти целей использовать git. Плюсы такого решения очевидны - синхронизируются только изменения, всегда есть возможность откатиться на несколько коммитов назад, можно даже применить такой способ на продакшне запилив отдельую ветку production и мерджить туда только проверенные изменения тестовой ветки.

У меня же это пока практически пустой и непосещаемый сервер проекты на котором находятся в зачаточном состоянии. Поэтому можно нарушить правила и делать коммиты прямо на продакшн =)

Описывать установку git на локальном компьютере и сервере принципиально не буду.

Создается пустой bare git-репозиторий на сервере

git --bare init

2) Создается репозиторий в папке с проектом на локальном компьютере и добавляются все файлы проекта

git init
git add .
git commit -q -m "first"

3) На сервере в .git/hooks создается хук post-receive с содержимым типа:

#!/bin/sh
GIT_WORK_TREE=/var/www/www.example.org git checkout -f

и даются права на запись chmod +x post-receive. Вместо /var/www/www.example.org ваш путь к директории сервера.

4) Затем репозиторий назначается как web

git remote add web ssh://server.example.org/путь_к_удаленному_репозиторию/website.git
git push web +master:refs/heads/master

5) Все! Теперь после проведения локальных коммитов опубликовать их на сервере можно одной командой

git push web

Если есть трудности с настройкой - пишите в комментариях, постараюсь помочь!

Другие проекты:

telegram-catalog.top

rhamdeew © 2020