No se puede escribir un mensaje de error cuando está en un gancho previo a la comprobación
-
26-10-2019 - |
Pregunta
Estoy escribiendo un gancho precomito, o mejor, estoy editando el gancho que viene de serie en el lanzamiento de Tigris SVN.
Mis objetivos son modestos, solo quiero escribir un mensaje de error a la persona que se ha comprometido sin proporcionar un mensaje de confirmación.
Entonces mis pensamientos eran simplemente escribir a Stderr con un simple mensaje de error. Pero por alguna razón, mis mensajes nunca parecen pasar.
Todos en Internet dicen que tengo que escribir en Stderr. Pero de alguna manera eso no funciona.
REPOS="$1"
TXN="$2"
LOG=""
#here is where it seems to wrong
#if [ ${#LOG} -lt 1 ]
echo "You did not provide a commit message, please try again." 2>&1
#fi
echo
# Make sure that the log message contains some text.
SVNLOOK=/usr/bin/svnlook
$SVNLOOK log -t "$TXN" "$REPOS" | \
grep "[a-zA-Z0-9]" > LOG || exit 1
# Exit on all errors.
set -e
# All checks passed, so allow the commit.
exit 0
Tienes que disculparme si esta es una pregunta tonta, pero soy un novato de Linux, así que me disculpan de antemano.
Gracias Jasper
Solución
Su forma de determinar el mensaje de registro es incorrecto. Prueba esto en su lugar:
SVNLOOK=/usr/bin/svnlook
LOGMSG=`$SVNLOOK log -t “$TXN” “$REPOS” | grep “[a-zA-Z0-9]” | wc -c`
if [ "$LOGMSG" -lt 1 ]; then
echo -e “Please provide a meaningful comment when committing changes.” 1>&2
exit 1
fi
Otros consejos
Tu codigo:
echo "You did not provide a commit message, please try again." 2>&1
no imprime en stderr (en su lugar, redirige stderr a stdout). Usar en su lugar (importante es el 1>&2):
echo "You did not provide a commit message, please try again." 1>&2