implanta desenvolvimento e ramificação mestre no servidor com git

1

Estou usando git para um projeto web django . Eu tenho um repositório nulo no meu servidor e envio meus commits da minha máquina local para ele. Eu também tenho um servidor de testes na minha máquina local, mas eu gostaria de ter duas versões do site no servidor. uma versão como site ativo (branch master) e uma versão como test server (branch de desenvolvimento). Então, eu preciso de dois diretórios de trabalho.

Gostaria de usar o gancho post-receive para

  1. atualiza meu diretório de trabalho de ramificação principal (para o site ativo no servidor)
  2. atualiza meu diretório de trabalho de filial de desenvolvimento (para meu site de teste no servidor)

normalmente eu faria

$ cat > hooks/post-receive
#!/bin/sh
GIT_WORK_TREE=/path/www.example.org git checkout -f
$ chmod +x hooks/post-receive

mas GIT_WORK_TREE não parece ser a escolha certa aqui, eu acho? Existe uma maneira melhor?

como posso definir os diretórios de trabalho para filiais?

    
por Dude 06.04.2015 / 00:56

2 respostas

2

de acordo com o artigo digitalocean em vez de GIT_WORK_TREE você precisa de uma combinação de opções --work-tree e --git-dir:

git --work-tree=/var/www/html --git-dir=/home/demo/proj checkout -f

e para o script pós-recebimento, acaba sendo um construto um pouco diferente do que você tem:

#!/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
    
por 06.04.2015 / 09:49
2

Sugestão:

#!/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

Tomou do meu servidor e funciona bem para mim.

Não se esqueça de corrigir o caminho, o controle remoto e o comando de reinicialização.

    
por 06.04.2015 / 11:51

Tags