I use Apache (and mod_dav_svn) to access SVN-Repositories on my Server via https. Checking out the repositories and adding, deleting or editing files works flawlessly, but when I rename or copy a file, the server returns 400 Bad Request on commit.
Apache configuration:
<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>
Exact error message:
svn: E175002: Commit failed (details follow):
svn: E175002: COPY of /***/!svn/bc/94/***: 400 Bad Request (https://***)
SVN Server:
$ svnadmin --version
svnadmin, version 1.6.17 (r1128011)
SVN Client used by my IDE (IntelliJ Idea 11):
Version: 1.7
Format: 29
Sadly I couldn't find any hints on the problem in the apache error log. Any suggestions on what might fix this problem?
EDIT: I noticed, that changing the config to
<LocationMatch /.+>
DAV svn
AuthzSVNAccessFile /var/local/conf/access.authz
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /var/local/conf/.htpasswd
require valid-user
</LocationMatch>
fixes the problem and allows me to use svn copy, but when i try to update my local working directory now, I get this error:
svn: E190001: Unusable URI: it does not refer to this repository
svn: E175002: REPORT of '/.+/***/!svn/vcc/default': 500 Internal Server Error (***)
Error in apache error log:
[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]
I'm not sure about the first problem.
But after you changed the config your second issue is being caused by the LocationMatch
having the DAV svn
directive, since that's causing every path to be calculated as the root of the repository.
This config should work:
<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>