我的托管服务提供商已启用受信任路径执行 (Grsec),因此我的所有 Subversion 钩子(例如提交后)都停止工作。任何提交操作的尝试都会以警告结束:
提交后钩子失败(退出代码 255),没有输出。
我检查过,可以使用以下语法手动运行脚本:
bash 提交后 [PATH] [REV]
但不是:
./post-commit [路径] [修订]
我认为 Subversion 使用了最后一个,这导致了问题。那么是否可以改变 Subversion 处理钩子的方式?
答案1
钩子的执行方法是硬编码的颠覆如果你想改变它,你必须修补源代码并重新构建它。相关代码可以在subversion/libsvn_repos/repos.{c,h}在源分布中。
顺便说一句,钩子当前是通过其完整路径执行的(如/path/to/your/repo/hooks/post-commit
),而不是通过执行cd /path/to/your/repo && ./post-commit
。