É muito estranho, mas ao definir um repositório git e criar um gancho pós-recebimento com:
echo "--initializing hook--"
cd ~/websites/testing
echo "--prepare update--"
git pull
echo "--update completed--"
o hook roda de fato, mas nunca consegue rodar o git pull corretamente:
6bfa32c..71c3d2a master -> master
--initializing hook--
--prepare update--
fatal: Not a git repository: '.'
Failed to find a valid git directory.
--update completed--
então estou me perguntando agora, como é possível fazer o gancho atualizar o clone com o pós-recebimento?
nesse caso, o usuário executando os processos é o mesmo, e tudo está dentro da pasta do usuário, então eu realmente não entendo ... porque se eu for manualmente para
cd ~/websites/testing
git pull
funciona sem nenhum problema ...
qualquer ajuda sobre isso seria muito apreciada
Muito obrigado
Uma coisa que experimentei foi que o uso do
post-update
gancho '--git-dir' funcionou muito bem, mas o git ainda estava reclamando de uma árvore em funcionamento ausente (apesar de usar '--work-tree')Em suma, isso não funcionou:
git --git-dir /path/to/websites/testing/.git --work-tree /path/to/websites/testing pull
considerando que isso funcionou:
cd /path/to/websites/testing
git --git-dir /path/to/websites/testing/.git pull
fonte
Isso não funciona?
Editado
Melhor ainda
fonte
Você já tentou com o caminho completo em vez do ~?
fonte
O script provavelmente é chamado com
/bin/sh
, o que não entende~
. Experimente com o caminho completo para~
.fonte
A primeira resposta recomendada está correta - quando um gancho está executando o GIT_DIR, etc. No entanto, se você deseja usar o script em outro repositório, esse método é defeituoso porque codifica a redefinição do GIT_DIR. Como eles sugeriram, a outra maneira é remover a variável usando env da seguinte maneira: env -i git reset --hard Obviamente, qual comando você executa depende de você - é apenas o bit 'env -i' que é o mais importante .
fonte