Я пишу сценарий пост-фиксации в bash, и я хотел бы передать сообщения клиенту, который делает коммит.Однако
echo my message >&2
не возвращается к клиенту.Можно ли отправлять сообщения обратно с помощью пост-фиксации?
Hook покажет STDERR, только если он потерпит неудачу (и, как вы можете сейчас, ловушка не отображает STDOUT). Таким образом, вы должны вернуть ненулевой код из вашего скрипта, чтобы передать «мое сообщение» пользователю (просто добавьте выход 1 после эха).
Взгляните здесь :
Если ловушка после фиксации вернет ненулевой статус выхода, фиксация будет не быть прерванным, так как он уже завершен. Тем не менее, все, что крючок, напечатанный на stderr, будет передан обратно клиенту, облегчая диагностику отказов хуков.
Передача хука после фиксации делает:
все, что хук, напечатанный в stderr, будет перенаправлен обратно клиенту, что упростит диагностику отказов хука.
Вы можете проверить, не является ли это простой проблемой цитаты:
echo "my message" >&2
Вы можете видеть в этих примерах хука , что любой echo to >&2 включает в себя кавычки.
echo
>&2
Глава bash по перенаправлению также включает примеры с кавычками.
Однако, как pmod подробности в егоответ , что сообщение stderr не будет видно, если состояние выхода скрипта не отличается от 0, как показано в « subversion post-commit hook: вывести сообщение об ошибке, которое может видеть пользователь? "
#!/bin/bash echo "test" >&2 exit 1
У меня была такая же проблема, с Apache и mod_svn. Оказалось, что маршалинг завершается неудачно, когда маршализируемый текст содержит &, < или > символов. После замены их на &, < и > текст прошел.
&
<
>
&
<
>