Incapable d'écrire un message d'erreur lors d'un crochet de pré-commit
-
26-10-2019 - |
Question
J'écris un crochet pre-commit, ou mieux, je l'édition du crochet qui est livré en standard sur le Tigris version SVN.
Mes objectifs sont modestes, je veux juste écrire un message d'erreur à la personne qui a commis sans fournir un message de validation.
Alors mes pensées devaient simplement écrire à stderr avec un simple message d'erreur. Mais pour une raison quelconque, mes messages ne semblent jamais passer.
Tout le monde sur Internet dit que je l'ai appris à écrire à stderr. Mais d'une certaine manière qui ne fonctionne pas.
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
Vous devez me excuser si cela est une question stupide, mais je suis un novice linux, donc des excuses au préalable.
Merci, Jasper
La solution
Votre façon de déterminer le message du journal est erroné. Essayez ceci:
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
Autres conseils
Votre code:
echo "You did not provide a commit message, please try again." 2>&1
n'imprime pas à stderr (au lieu qu'il stderr vers stdout). Utilisez plutôt (important est le 1> et 2 ):
echo "You did not provide a commit message, please try again." 1>&2