Es muy extraño, pero al configurar un repositorio git y crear un gancho posterior a la recepción con:
echo "--initializing hook--"
cd ~/websites/testing
echo "--prepare update--"
git pull
echo "--update completed--"
el gancho se ejecuta de hecho, pero nunca logra ejecutar git pull correctamente:
6bfa32c..71c3d2a master -> master
--initializing hook--
--prepare update--
fatal: Not a git repository: '.'
Failed to find a valid git directory.
--update completed--
así que ahora me pregunto, ¿cómo es posible hacer que el gancho actualice el clon con post-recepción?
en este caso el usuario que ejecuta los procesos es el mismo, y está todo dentro de la carpeta del usuario, así que realmente no entiendo ... porque si entro manualmente
cd ~/websites/testing
git pull
funciona sin ningún problema ...
cualquier ayuda en eso sería muy apreciada
Muchas gracias
Una cosa que experimenté fue que usar el
post-update
gancho '--git-dir' funcionó muy bien, pero git todavía se quejaba de la falta de un árbol de trabajo (a pesar de usar '--work-tree')En resumen, esto no funcionó:
git --git-dir /path/to/websites/testing/.git --work-tree /path/to/websites/testing pull
mientras que esto funcionó:
cd /path/to/websites/testing
git --git-dir /path/to/websites/testing/.git pull
fuente
¿Esto no funciona?
Editado
Mejor aún
fuente
¿Has probado con la ruta completa en lugar de ~?
fuente
Probablemente se invoque el script
/bin/sh
, que no comprende~
. Pruébelo con la ruta completa a en su~
lugar.fuente
La primera respuesta recomendada es correcta: cuando se ejecuta un gancho, se establecen GIT_DIR, etc. Sin embargo, si desea poder usar el script en otro repositorio, entonces ese método es defectuoso porque codifica el restablecimiento de GIT_DIR. Como lo implicaron, la otra forma es eliminar la variable usando env de la siguiente manera: env -i git reset --hard Obviamente, el comando que ejecutas depende de ti; solo el bit 'env -i' es el bit importante .
fuente