Estou usando um gancho semelhante, mas o GIT_DIR deve apontar para o subdiretório .git.
#!/bin/sh
cd /home/<user>/<test_repo>
GIT_DIR=.git git pull origin master
Basicamente, eu tenho um servidor com um repositório git 'origin'. Eu estou tentando ter outro repo auto-pull da origem toda vez que alguém empurra código para ele. Eu tenho usado os ganchos de origem, especificamente pós-recebimento. Até agora, minha postagem recebe algo parecido com isto:
#!/bin/sh
GIT_DIR=/home/<user>/<test_repo>
git pull origin master
Mas quando eu envio para um outro computador, recebo o erro:
remote: fatal: Not a git repository: '/home/<user>/<test_repo>'
No entanto, test_repo definitivamente é um repositório do git. Eu posso fazer um cd nele e rodar 'git pull origin master' e ele funciona bem.
Existe uma maneira mais fácil de fazer o que estou tentando fazer? Se não, o que estou fazendo errado com essa abordagem? Agradecemos antecipadamente.
Edite, para esclarecer: o repo é um site em andamento e eu gostaria de ter uma versão disponível o tempo todo e totalmente atualizada.
Quando você define uma variável de ambiente, ela está disponível apenas dentro desse shell - assim, quando você inicia outro programa, como o git, as variáveis locais não são repassadas. Vamos dizer que temos test.sh
:
#!/usr/bin/bash
echo "GIT_DIR=$GIT_DIR"
Agora vamos ver os exemplos a seguir
$ GIT_DIR=LOOK_MY_GIT_DIR_IS_SET
$ ./test.sh
GIT_DIR=
Isso ocorre porque a variável de ambiente não foi exportada para o programa iniciado.
$ export GIT_DIR=LOOK_MY_GIT_DIR_IS_SET
$ ./test.sh
GIT_DIR=LOOK_MY_GIT_DIR_IS_SET
No exemplo de ScottZ, definir a variável de ambiente quando você inicia o programa faz com que seja exportado APENAS para esse comando.
$ GIT_DIR=LOOK_MY_GIT_DIR_IS_SET ./test.sh
GIT_DIR=LOOK_MY_GIT_DIR_IS_SET
Espero que isso ajude!
Tem certeza de que está definindo o GIT_DIR corretamente?
Eu suponho que você esteja comprando de um repositório não-nu, neste caso, o seu GIT_DIR deve ser
GIT_DIR=/home/user/test_repo/.git
Para testar isso, execute o seguinte na linha de comando:
GIT_DIR=/home/user/test_repo/.git git status
Tags git