SVN post-commit перехватывает отправку сообщения клиенту - PullRequest
11 голосов
/ 08 декабря 2011

Я пишу сценарий пост-фиксации в bash, и я хотел бы передать сообщения клиенту, который делает коммит.Однако

echo my message >&2

не возвращается к клиенту.Можно ли отправлять сообщения обратно с помощью пост-фиксации?

Ответы [ 3 ]

13 голосов
/ 08 декабря 2011

Hook покажет STDERR, только если он потерпит неудачу (и, как вы можете сейчас, ловушка не отображает STDOUT). Таким образом, вы должны вернуть ненулевой код из вашего скрипта, чтобы передать «мое сообщение» пользователю (просто добавьте выход 1 после эха).

Взгляните здесь :

Если ловушка после фиксации вернет ненулевой статус выхода, фиксация будет не быть прерванным, так как он уже завершен. Тем не менее, все, что крючок, напечатанный на stderr, будет передан обратно клиенту, облегчая диагностику отказов хуков.

6 голосов
/ 08 декабря 2011

Передача хука после фиксации делает:

все, что хук, напечатанный в stderr, будет перенаправлен обратно клиенту, что упростит диагностику отказов хука.

Вы можете проверить, не является ли это простой проблемой цитаты:

echo "my message" >&2

Вы можете видеть в этих примерах хука , что любой echo to >&2 включает в себя кавычки.

Глава bash по перенаправлению также включает примеры с кавычками.

Однако, как pmod подробности в егоответ , что сообщение stderr не будет видно, если состояние выхода скрипта не отличается от 0, как показано в « subversion post-commit hook: вывести сообщение об ошибке, которое может видеть пользователь? "

#!/bin/bash
echo "test" >&2
exit 1
4 голосов
/ 07 марта 2012

У меня была такая же проблема, с Apache и mod_svn. Оказалось, что маршалинг завершается неудачно, когда маршализируемый текст содержит &, < или > символов. После замены их на &amp;, &lt; и &gt; текст прошел.

...