我有一个SVN post-commit钩子,在对存储库进行提交时更新工作副本。 post-commit钩子执行以下命令:
/usr/bin/svn update /path/to/working/copy
在我启用Apache mod_dav Require valid-user
指令之前,它工作正常。使用tortoisesvn客户端进行Windows身份验证时可以正常运行,因为它会询问您的用户名和密码并保存详细信息。但由于这是一个非交互式过程,因此不提供用户名和密码,更新失败。
Apache以用户和组nobody
和nogroup
运行,这也是拥有存储库和工作副本的用户和组。
nobody
用户没有密码,因为它无法登录。它仅用于运行Apache等。我尝试使用以下命令将nobody
添加到dav_svn.passwd
文件:
htpasswd dav_svn.passwd nobody
尝试直接在命令行运行提交后脚本时出现以下错误:
Authentication realm:
更新
将以下内容添加到dav_svn.conf:
Allow from 127.0.0.1
Satisfy any
修复了该问题,但随后引发了另一个问题,即tortoisesvn客户端不再需要身份验证。
答案 0 :(得分:3)
看起来Apache正在向您的svn update
进程询问密码。这对于非交互式过程来说很烦人。 ; - )
我认为您可能希望使用直接文件系统路径而不是通过Apache重新检出您的工作副本。
答案 1 :(得分:1)
这可能会有所帮助,因为它将允许服务器自行访问:
Allow from 127.0.0.1
Require valid-user
Satisfy any