El gancho posterior a la recepción de git arroja el error "comando no encontrado" pero parece funcionar correctamente y no hay errores cuando se ejecuta manualmente

El gancho posterior a la recepción de git arroja el error "comando no encontrado" pero parece funcionar correctamente y no hay errores cuando se ejecuta manualmente

Tengo un gancho posterior a la recepción que se ejecuta en un repositorio central de git configurado con gitolite para activar un git pull en un servidor provisional. Parece funcionar correctamente, pero arroja un error de "comando no encontrado" cuando se ejecuta. Estoy intentando localizar el origen del error, pero no he tenido suerte. Ejecutar los mismos comandos manualmente no produce ningún error.

El error cambia según lo que se hizo en la confirmación que se envía al repositorio central. Por ejemplo, si 'git rm ' se confirmó y se envió al repositorio central, el mensaje de error será "remoto: ganchos/post-receive: línea 16: Eliminado: comando no encontrado" y si 'git add ' se confirmó y se envió a En el repositorio central, el mensaje de error será "remoto: ganchos/post-recepción: línea 16: Combinación: comando no encontrado". En cualquier caso, la ejecución de 'git pull' en el servidor provisional funciona correctamente a pesar del mensaje de error.

Aquí está el guión posterior a la recepción:

#!/bin/bash
#
# This script is triggered by a push to the local git repository.  It will
# ssh into a remote server and perform a git pull.
#
# The SSH_USER must be able to log into the remote server with a
# passphrase-less SSH key *AND* be able to do a git pull without a passphrase.
#
# The command to actually perform the pull request on the remost server comes
# from the ~/.ssh/authorized_keys file on the REMOTE_HOST and is triggered
# by the ssh login. 

SSH_USER="remoteuser"
REMOTE_HOST="staging.server.com"

`ssh $SSH_USER@$REMOTE_HOST` # This is line 16

echo "Done!"

El comando que realiza git pull en el servidor provisional está en el archivo ~/.ssh/authorized_keys del usuario ssh y es:

command="cd /var/www/staging_site; git pull",no-port-forwarding,no-X11-forwarding,no-agent-forwarding, ssh-rsa AAAAB3NzaC1yc2EAAAABIwAA... (the rest of the public key)

Este es el resultado real de eliminar un archivo de mi repositorio local, confirmarlo localmente y enviarlo al repositorio central de git:

ben@tamarack:~/thejibe/testing/web$ git rm ./testing
rm 'testing'
ben@tamarack:~/thejibe/testing/web$ git commit -a -m "Remove testing file"
[master bb96e13] Remove testing file
1 files changed, 0 insertions(+), 5 deletions(-)
delete mode 100644 testing
ben@tamarack:~/thejibe/testing/web$ git push 
Counting objects: 3, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 221 bytes, done.
Total 2 (delta 1), reused 0 (delta 0)
remote: From [email protected]:testing
remote:    aa72ad9..bb96e13  master     -> origin/master
remote: hooks/post-receive: line 16: Removed: command not found # The error msg
remote: Done!
To [email protected]:testing
aa72ad9..bb96e13  master -> master
ben@tamarack:~/thejibe/testing/web$

Como puede ver, el script posterior a la recepción llega a la echo "Done!"línea y cuando miro en el servidor de prueba, git pullse ejecutó con éxito, pero todavía aparece ese mensaje de error molesto.

Cualquier sugerencia sobre dónde buscar la fuente del mensaje de error será muy apreciada. Estoy tentado a redirigir stderr a /dev/null pero preferiría saber cuál es el problema.

Respuesta1

Es posible que el gancho se esté ejecutando sin que PATH esté configurada en algo sensato. ¿Has intentado utilizar la ruta completa a ssh? De lo contrario, eche un vistazo a las variables de entorno cuando se ejecute su script. Puedes usar 'exportar' para volcar una lista de ellos, probablemente no serán lo que crees.

información relacionada