Назад | Перейти на главную страницу

развернуть разработку и главную ветку на сервере с помощью git

Я использую git для django веб-проект. У меня есть голый репозиторий git на моем сервере, и я отправляю на него свои коммиты с моей локальной машины. У меня также есть тестовый сервер на моем локальном компьютере, но я хотел бы иметь 2 версии веб-сайта на сервере. одна версия в качестве живого сайта (основная ветка) и одна версия в качестве тестового сервера (разработка ветки). Так что мне нужно 2 рабочих каталога.

Я хотел бы использовать post-receive зацепить

  1. обновить рабочий каталог моей главной ветки (для работающего сайта на сервере)
  2. обновить рабочий каталог моей ветки разработки (для моего тестового сайта на сервере)

обычно я бы сделал

$ 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