run - git post-receive hook no está funcionando
git pull automatically (6)
¿Estás seguro de que no está funcionando? Debe estar funcionando, simplemente no puedes verlo. Mi conjetura es que no hay una salida estándar establecida en su sesión ssh en el momento en que se ejecuta, por lo que nunca verá la salida de su eco. El enlace sugiere probarlo localmente, no a través de ssh.
Tengo un servidor de repositorio simple, y puedo enviar y enviar con éxito desde mi máquina local. Sin embargo, el enlace posterior a la recepción no se está ejecutando. Detalles:
- Usando SSH como protocolo
- He cambiado el nombre del estándar "post-receive.sample" a "post-receive"
- Este archivo tiene permisos
-rwxr-xr-x
- El archivo es propiedad del mismo usuario que posee el repositorio, que es el mismo usuario SSH que inicia sesión y empuja
- El empuje real va bien; Los archivos se actualizan. Es solo el enganche que no se ejecuta.
- Intenté poner
echo "Some text"
antes y después del enlace, pero esto no se muestra (ver: Publicar confirmación de enlace no se está ejecutando ). - El script de enlace se incluye a continuación, aunque esto parece no estar causando el problema
- Usando git 1.7.0.4 en Ubuntu 10.04
.
user@server:/home/repos/project1/hooks# cat post-receive
#!/bin/sh
echo "Hook is running..."
export GIT_WORK_TREE=/home/web/project1/www/
git checkout -f
rm -rf /home/web/project1/www/temp/
El problema estaba relacionado con el montaje del sistema de archivos. La partición se montó como noexec
y, por lo tanto, no se pudo ejecutar ningún archivo. Esto causó que el gancho no corriera. noexec
bandera noexec
y ahora funciona bien.
Para que un gancho Git se ejecute, debe tener permisos establecidos para permitir que sea ejecutable. Si parece que un gancho no se está ejecutando, verifique los permisos y asegúrese de que sea ejecutable. Si no es así, puedes hacer que todos los ganchos sean ejecutables de esta manera:
chmod ug+x .git/hooks/*
... o si desea realizar un solo gancho (por ejemplo, post-receive
) ejecutable:
chmod ug+x .git/hooks/post-receive
(Gracias a este post )
Parece que GIT NO ejecutará el enlace posterior a la recepción si no hay cambios en el código base.
En mi caso,
El enganche posterior no se estaba ejecutando, pero la operación "push" seguía devolviendo el siguiente mensaje.
Todo actualizado
Así que acabo de crear un archivo vacío en mi código, lo confirmé y luego lo empujé a remoto. En el que se ejecutó el gancho posterior a la recepción .
Tuve el mismo problema en un sistema Centos 6, donde resultó que SELinux evitó que se ejecutaran los scripts de enganches. Convirtiendo httpd_git_script_t en un dominio permisivo ayudó aquí (ya que "sesearch -A -s httpd_git_script_t -p exec" no produjo nada, es decir.
semanage permissive -a httpd_git_script_t
Tuve este problema Tenía un error tipográfico en mi script nombre de archivo.
post-recepción en lugar de post-recepción