我使用Apache(和mod_dav_svn)通过https访问我服务器上的SVN-Repositories。检查存储库并添加,删除或编辑文件可以完美地工作,但是当我重命名或复制文件时,服务器会在提交时返回400 Bad Request。
Apache配置:
<VirtualHost *:443>
ServerName ***
SSLEngine on
SSLCertificateChainFile /etc/ssl/certs/sub.class1.server.ca.pem
SSLCertificateFile /etc/ssl/certs/***.crt
SSLCertificateKeyFile /etc/ssl/private/***.key
<Location />
DAV svn
SVNParentPath /var/local/svn
SVNListParentPath on
Order deny,allow
Allow from all
</Location>
<LocationMatch /.+>
AuthzSVNAccessFile /var/local/conf/access.authz
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /var/local/conf/.htpasswd
require valid-user
</LocationMatch>
</VirtualHost>
确切的错误消息:
svn: E175002: Commit failed (details follow):
svn: E175002: COPY of /***/!svn/bc/94/***: 400 Bad Request (https://***)
SVN服务器:
$ svnadmin --version
svnadmin, version 1.6.17 (r1128011)
我的IDE(IntelliJ Idea 11)使用的SVN客户端:
Version: 1.7
Format: 29
遗憾的是,我在apache错误日志中找不到任何有关此问题的提示。 关于什么可以解决这个问题的任何建议?
编辑: 我注意到,将配置更改为
<LocationMatch /.+>
DAV svn
AuthzSVNAccessFile /var/local/conf/access.authz
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /var/local/conf/.htpasswd
require valid-user
</LocationMatch>
修复了问题并允许我使用svn副本,但是当我尝试立即更新我的本地工作目录时,我收到此错误:
svn: E190001: Unusable URI: it does not refer to this repository
svn: E175002: REPORT of '/.+/***/!svn/vcc/default': 500 Internal Server Error (***)
apache错误日志出错:
[Thu Jan 23 18:00:18 2014] [error] [client 94.222.125.77] Could not parse 'src-path' URL. [500, #190001]
[Thu Jan 23 18:00:18 2014] [error] [client 94.222.125.77] Unusable URI: it does not refer to this repository [500, #190001]
答案 0 :(得分:0)
我不确定第一个问题。
但是在更改配置之后,第二个问题是LocationMatch
具有DAV svn
指令引起的,因为这导致每个路径都被计算为存储库的根目录。
此配置应该有效:
<Location />
DAV svn
SVNParentPath /var/local/svn
SVNListParentPath on
Order deny,allow
Allow from all
AuthzSVNAccessFile /var/local/conf/access.authz
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /var/local/conf/.htpasswd
require valid-user
</Location>