2012-04-06 3 views
6

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

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

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

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

При чтении я нашел много людей, предлагающих создать еще два клона на пульте дистанционного управления: один для живого сайта и один для сайта разработки, по мере необходимости потянув ветки. Это, однако, также оставляет файлы контроля версий доступными через Интернет, чего я не хочу. В идеале я хочу «чистую» копию без каких-либо 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, я получил ошибку)? Есть ли кто-нибудь, кто может указать мне в правильном направлении?

ответ

4

В качестве аргумента для git-архива можно использовать любое дерево-иш (любую ветку, тег, sha1-хэш и т. Д.). Вы не можете использовать origin/master, так как вы находитесь в голом репо, и у него нет источника. Вам нужно использовать имена локальных ветвей, например.

git archive --format=tar develop 
+0

Жаль, что я не смог бы поддержать это 5 раз. Так просто ... так просто. – Bram

+0

Hehehe thanks :) – ralphtheninja

+0

Последний вопрос, прежде чем, наконец, принять это: можно ли удалить файлы .gitignore? – Bram

Смежные вопросы