Environment: Subversion 1.3 on Windows (XP).
mod_authz_svn on apache 2.0.55
The original problem is that repositories on a Windows Subversion 1.3 server are
not always accessible anymore from working copies with a different cased url.
[ Thread on users list is available at:
- a repository in c:\svn\repos
- a working copy of that repository pointing to http://localhost/svn/REPOS
- an authz access file containing:
* = r
* = rw
When committing a changed file from the working copy, the commit will fail with
Error: Commit failed (details follow):
Error: MKACTIVITY of '/svn/REPOS/!svn/act/de187878-21c7-f043-8c80-474dfd67c66d':
Error: Forbidden (http://localhost)
For unix users this might seem logical, and I'm pretty sure this is expected
1. A subversion 1.2.3 server handled this without problems. Which makes this an
undocumented change in behaviour.
2. It turns out that the repository matching functions in authz, all use the
find_option function in libsvn_subr/config.c, which is case insensitive!
This leads to another type of unexpected behaviour: On linux, if you have two
repositories 'test' and 'TEST', it is not possible to specify different authz
rules for those, because the rules you define for repository 'test' will also
match for repository 'TEST'.
I discussed this with David Anderson on irc, and the current suggestion is the
make find_option case sensitive for matching repository names.
This means that people on Windows will have to stick to exact cased letters.
Since URI's are case sensitive as well that seems to be the most logical choice.