In grado di scrivere un messaggio di errore quando su un gancio di pre-commit
-
26-10-2019 - |
Domanda
Sto scrivendo un pre-commit hook, o meglio, sto modificando il gancio che viene fornita di serie sul Tigri rilascio SVN.
I miei obiettivi sono modesti, voglio solo scrivere un messaggio di errore per la persona che ha commesso senza fornire un messaggio di commit.
Così i miei pensieri erano a poco scrittura a stderr con un semplice messaggio di errore. Ma per qualche ragione, i miei messaggi non sembrano mai a passare.
Tutti su internet dice che ho avuto modo di scrivere a stderr. Ma in qualche modo che non funziona.
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
Dovete scusarmi se questa è una domanda stupida, ma io sono un novizio di Linux, quindi mi scuso in anticipo.
Grazie, Jasper
Soluzione
Il tuo modo di determinare il messaggio di log è sbagliato. Prova a modificare:
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
Altri suggerimenti
Il tuo codice:
echo "You did not provide a commit message, please try again." 2>&1
non stampa su stderr (invece reindirizza stderr su stdout). Utilizzare invece (importante è il 1> & 2 ):
echo "You did not provide a commit message, please try again." 1>&2