Развертывание веб-сайта PHP из репозитория Git

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

У меня есть удаленный VPS, на котором работает мой рабочий веб-сайт на www.example.com и версия для разработки на dev.example.com (они находятся в /var/www/ пример/htdocs/ и /var/www/example/subdomains/dev/).

Разработка ведется из чистого репозитория в /opt/git/example.git/. В голом репо есть ветка master и development. У меня и другого разработчика есть клон этого репозитория на нашем локальном компьютере. Мы берем из ветки разработки и работаем оттуда. Идея состоит в том, что dev.example.com имеет обновленный код из ветки разработки, и после того, как он будет должным образом протестирован, мы объединяемся с мастером, добавляем тег и обновляем example.com (в основном, это поток git).

Первый подход, который я нашел на канале Git IRC, использует хуки для обновления репозиториев, но это кажется очень ограничивающим, а иногда и нежелательным. Я хотел бы сам запустить команду на сервере после отправки, которая обновляет среду разработки.Другая команда (или сценарий оболочки) будет обновлять активный сайт из основной ветки после слияния разработки). Я также нашел Capistrano, но на данный момент это кажется немного выше моего понимания.

Пока я читал, я нашел много людей, предлагающих создать еще два клона на удаленке: один для живого сайта и один для сайта разработки, подтягивая ветки по мере необходимости. Однако это также оставляет файлы контроля версий доступными через Интернет, чего я не хочу. В идеале мне нужна «чистая» копия без каких-либо файлов или папок git.

Я также нашел подход с использованием архива git, но запуск архива git из моего «голого» репозитория позволяет мне заархивировать только основную ветку. Я делаю это с помощью команды git archive --format=tar HEAD | (cd /var/www/example/htdocs/ && tar xf -)в /opt/git/example.git/.

Я чувствую, что подход git archiveближе всего подходит к ответу, но я ограничен недостатком знаний о Git. Могу ли я изменить команду, чтобы использовать ветку вместо HEAD (когда я попытался использовать origin/master вместо HEAD, я получил ошибку)? Есть ли кто-нибудь, кто может указать мне правильное направление?

6
задан Bram 6 April 2012 в 14:02
поделиться