4

我有一个托管 svn(版本 1.6.11 (r934486))存储库的 centos6 linux 服务器,可通过 Apache 通过 DAV 访问。我正在使用 windows tortoise-svn 客户端 1.7.12 来访问 repo。

我有一个非常简单的测试预提交钩子,它总是会失败。

echo "this is a test"
exit 1

尝试提交失败

Sending content: D:\code\foo\test.c  
Error: Commit failed (details follow):  
Error: Commit blocked by pre-commit hook (exit code 1) with no output.  
Completed!:   

我期待在我的客户端上看到“这是一个测试”,但是我得到了 pre-commit 钩子退出而没有输出。hooks/pre-commit 是可执行的,并且在 linux 服务器上手动运行时会回显预期的输出。

关于我缺少什么的任何指示?

4

1 回答 1

6

只有打印到 stderr 的输出才会中继到客户端。因此,以下更改应该使您的测试挂钩工作:

echo "this is a test" >&2
exit 1

作为参考,以下是Subversion book的相关引用:

“如果pre-commit钩子程序返回非零退出值,则提交被中止,提交事务被删除,并且打印到stderr的任何内容都被编组回客户端。”

于 2013-05-25T16:43:39.287 回答