Невозможно написать сообщение об ошибке, когда на крючке предварительной коммиты
-
26-10-2019 - |
Вопрос
Я пишу предварительный крюк, или, что лучше, я редактирую крюк, который входит в стандартную комплектацию в релизе Tigris SVN.
Мои цели скромны, я просто хочу написать сообщение об ошибке человеку, который совершил, не предоставляя послание коммита.
Поэтому мои мысли были просто написать в Stderr с простым сообщением об ошибке. Но по какой -то причине мои сообщения, кажется, никогда не проходят.
Все в Интернете говорят, что я должен написать Стерру. Но как -то это не работает.
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
Вы должны извинить меня, если это глупый вопрос, но я новичок Linux, поэтому извиняюсь заранее.
Спасибо, Джаспер
Решение
Ваш способ определения сообщения журнала неправильно. Попробуйте вместо этого:
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
Другие советы
Ваш код:
echo "You did not provide a commit message, please try again." 2>&1
не печатает на Stderr (вместо этого он перенаправляет Stderr на Stdout). Вместо этого используйте (важно 1>&2):
echo "You did not provide a commit message, please try again." 1>&2