我希望有人能够回答我的问题。
我设置了Subversion,由Apache2 + SSL提供服务,进行Web开发。
我想要一个在我的测试服务器上运行svn update的post-commit钩子,所以当有人提交时,它会自动更新测试站点。挂钩不起作用,因为证书是自生成的证书而且不受信任。
我试图接受(p)永久性,但事实并非如此。
有什么想法吗?
答案 0 :(得分:8)
root拥有我的$ HOME中的.subversion文件夹,所以我将其删除并再次运行'svn up'。现在一切都很好。
答案 1 :(得分:5)
在Linux下:
这里我通过将$ HOME / .subversion / auth / svn.ssl.server中的文件chmodding到-rw-r - r--来解决问题。 显然,如果服务器获得新的或升级的证书,它会写入新文件,但不会为自己添加写权限。使用-r -r -r--权限svn程序可以正常工作,但是它不能将“Accept permanent”标志写入文件.. :)
答案 2 :(得分:1)
您没有说明您的测试服务器正在运行什么平台,但如果它是Windows框,那么您需要将证书添加到测试服务器的证书存储区。以下technet文章可能有一些用处:
答案 3 :(得分:1)
可能是subversion作为一个不同的用户运行,然后是你在钩子调用时接受证书的用户。尝试找出用户(例如,在提交后的钩子脚本中放置“echo $ USER> / tmp / svn-hook-user”)并使用sudo接受该用户的证书。
或者,查看Subversion书籍,了解如何设置配置,以便接受自签名证书:SSL certificate management。
答案 4 :(得分:0)
您是否在脚本中使用sudo或其他内容? Sudo通常会清除环境变量,因此HOME不存在。您必须具有可写主目录,其中subversion可以存储有关永久接受的证书的信息。因此,在脚本的开头自己设置HOME变量,它应该可以工作。
答案 5 :(得分:0)
在使用Apache的Window Server上设置此问题时遇到了同样的问题。 post commit hook会失败。我不确定SVN独立,但我使用作为Windows服务运行的VisualSVN Server。这项服务的默认用户帐户是网络服务 - 所以我只是将帐户更改为我自己的管理员帐户,并且每件事都有效。
答案 6 :(得分:0)
当您的测试站点位于同一台服务器上时,请使用 file:/// 检查存储库以避免进行证书检查。
svn co file:///path_to/your/repo