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

È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top