我正在使用bash編寫post-commit腳本,並且想要將消息傳回給正在進行提交的客戶端。但是,SVN post-commit hook將消息發送回客戶端
echo my message >&2
沒有讓它回到客戶端。甚至有可能用post-commit鉤子發回消息?
我正在使用bash編寫post-commit腳本,並且想要將消息傳回給正在進行提交的客戶端。但是,SVN post-commit hook將消息發送回客戶端
echo my message >&2
沒有讓它回到客戶端。甚至有可能用post-commit鉤子發回消息?
Condering一個post-commit hook作用:
任何標準錯誤的鉤子將被編組回客戶端,使其更容易診斷鉤子的失敗。
你可以檢查,如果這不是一個簡單的問題帖:
echo "my message" >&2
可以在那些hook examples任何echo
至>&2
包括引號看到。
bash chapter on redirection還包含帶引號的示例。
然而,在his answerpmod細節,即標準錯誤信息將不可見,除非腳本的退出狀態從0不同,爲「subversion post-commit hook: print an error message that the user can see?」
#!/bin/bash
echo "test" >&2
exit 1
鉤子只有在失敗時纔會顯示STDERR(並且您可能現在鉤子不顯示STDOUT)。 因此,您必須從腳本中返回非零代碼,以便將「我的消息」傳遞給用戶(僅在echo後添加出口1)。
看看here:
如果提交後鉤子返回非零值,提交將 不會終止,因爲它已經完成。但是,鉤子打印到stderr的所有內容都將彙總回客戶端, 可以更容易地診斷鉤子故障。
我有同樣的問題所示,與Apache和mod_svn。事實證明,編組失敗時編組文本包含&
,<
或>
字符。在用&
,<
和>
代替它們後,文本通過了。
謝謝!這正是我們所面對的mod_svn。永遠不會想出來...... –
由於pmod如下所述,如果此(或任何)鉤子返回非零返回值,則只會將stderr屏幕打印到客戶端。這可能是@CamelBlues遇到的問題。 – physicsmichael
這個答案是錯誤的。 Pmod有正確的腳本必須返回非0值。 – Catskul