2011-12-08 8 views

Respuesta

5

Condering un post-commit hook hace:

cualquier cosa que el gancho impresa en stderr se marshalled de vuelta al cliente, por lo que es más fácil de diagnosticar fallos de gancho.

se puede comprobar si este no es un asunto simple cita:

echo "my message" >&2 

Se puede ver en los hook examples que cualquier echo->&2 incluye citas.

El bash chapter on redirection también incluye ejemplos con comillas.

Sin embargo, como pmod detalles en his answer, ese mensaje stderr no será visible a menos que el estado de salida de la secuencia de comandos es diferente de 0, como se ilustra en "subversion post-commit hook: print an error message that the user can see?"

#!/bin/bash 
echo "test" >&2 
exit 1 
+0

Como pmod dice a continuación, la pantalla stderr solo se imprime al cliente si este (o cualquier) enlace devuelve un valor de retorno distinto de cero. Ese fue probablemente el problema @CamelBlues encontrado. – physicsmichael

+0

Esta respuesta es incorrecta. Pmod tiene razón en que la secuencia de comandos debe devolver un valor que no sea 0. – Catskul

11

Hook mostrará STDERR solo si falla (y como puede que ahora, el enganche no muestra STDOUT). Por lo tanto, debe devolver un código distinto de cero de su secuencia de comandos para pasar "mi mensaje" al usuario (simplemente agregue exit 1 después del eco).

Tome una mirada here:

Si el gancho post-commit devuelve un código de salida distinto de cero, la confirmación se no ser abortado debido a que ya se ha completado. Sin embargo, cualquier cosa que el gancho impreso en stderr se distribuirá de vuelta al cliente, , lo que facilita el diagnóstico de fallas de gancho.

4

que tenían el mismo problema, con Apache y mod_svn. Resultó que el marshalling falla cuando el texto que se está ordenando contiene &, < o > caracteres. Después de sustituirlos por &amp;, &lt; y &gt;, se recibió el texto.

+0

Gracias! Esto es exactamente lo que enfrentamos con mod_svn. Nunca lo hubiera descubierto ... –

Cuestiones relacionadas