apachesvnsslmod-dav-svn

svn COPY results in 400 Bad Request


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]

Solution

  • 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>