SVN中执行提交后挂钩时的身份验证错误

时间:2010-01-19 17:20:08

标签: svn version-control tortoisesvn

我有一个SVN post-commit钩子,在对存储库进行提交时更新工作副本。 post-commit钩子执行以下命令:

/usr/bin/svn update /path/to/working/copy

在我启用Apache mod_dav Require valid-user指令之前,它工作正常。使用tortoisesvn客户端进行Windows身份验证时可以正常运行,因为它会询问您的用户名和密码并保存详细信息。但由于这是一个非交互式过程,因此不提供用户名和密码,更新失败。

Apache以用户和组nobodynogroup运行,这也是拥有存储库和工作副本的用户和组。

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客户端不再需要身份验证。

2 个答案:

答案 0 :(得分:3)

看起来Apache正在向您的svn update进程询问密码。这对于非交互式过程来说很烦人。 ; - )

我认为您可能希望使用直接文件系统路径而不是通过Apache重新检出您的工作副本。

答案 1 :(得分:1)

这可能会有所帮助,因为它将允许服务器自行访问:

Allow from 127.0.0.1
Require valid-user
Satisfy any