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