Я пытаюсь разобраться с 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, я получил ошибку)? Есть ли кто-нибудь, кто может указать мне правильное направление?