No se puede escribir un mensaje de error cuando está en un gancho previo a la comprobación

StackOverflow https://stackoverflow.com/questions/5330419

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

¿Fue útil?

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top