Невозможно записать сообщение об ошибке при подключении до фиксации - PullRequest
2 голосов
/ 16 марта 2011

Я пишу ловушку перед фиксацией, или, что лучше, я редактирую ловушку, которая входит в стандартную версию выпуска SVN tigris.

Мои цели скромные, я просто хочу написать сообщение об ошибкечеловеку, который совершил коммит без предоставления сообщения коммита.

Так что я думал просто написать в stderr простое сообщение об ошибке.Но по какой-то причине мои сообщения, кажется, никогда не проходят.

Все в интернете говорят, что я должен написать в 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, поэтому заранее извиняюсь.

спасибо, Джаспер

Ответы [ 2 ]

7 голосов
/ 16 марта 2011

Ваш способ определения сообщения журнала неверен.Попробуйте вместо этого:

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
1 голос
/ 16 марта 2011

Ваш код:

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
...