Я использую git
для django
веб-проект. У меня есть голый репозиторий git на моем сервере, и я отправляю на него свои коммиты с моей локальной машины. У меня также есть тестовый сервер на моем локальном компьютере, но я хотел бы иметь 2 версии веб-сайта на сервере. одна версия в качестве живого сайта (основная ветка) и одна версия в качестве тестового сервера (разработка ветки). Так что мне нужно 2 рабочих каталога.
Я хотел бы использовать post-receive
зацепить
обычно я бы сделал
$ cat > hooks/post-receive
#!/bin/sh
GIT_WORK_TREE=/path/www.example.org git checkout -f
$ chmod +x hooks/post-receive
но я думаю, что GIT_WORK_TREE здесь не правильный выбор? Есть ли способ лучше?
как я могу определить рабочие каталоги для веток?
Предложение:
#!/bin/sh
echo
echo "*** Moving to Live ***"
echo
cd /path/to/project || exit
unset GIT_DIR
git pull origin master
echo
echo "*** Pulling to Live ***"
echo
/etc/init.d/nginx restart
#exec git-update-server-info
Взял с моего сервера и у меня работает хорошо.
Не забудьте исправить путь, пульт и команду перезапуска.
в соответствии с статья в digitalocean вместо GIT_WORK_TREE вам понадобится комбинация параметров --work-tree и --git-dir:
git --work-tree=/var/www/html --git-dir=/home/demo/proj checkout -f
а для сценария пост-получения он оказывается немного другой конструкцией, чем у вас:
#!/bin/bash
while read oldrev newrev ref
do
if [[ $ref =~ .*/master$ ]];
then
git --work-tree=/var/www/html --git-dir=/home/demo/proj checkout -f
fi
done