It just took me about 4 hours of head-scratching (this post is
helping me let out some steam :-)) to finally come up with an
explanation for what was happening with one of my Subversion
repositories. I'll describe the problem and the final solution here, in
hope someone will make this easier to deal with in later Subversion
I have the following setup:
* svnserve based repository running on a Windows machine (XXX).
* Server version: 1.5.4 (r33841).
* Standard CollabNet installation package.
* Repository using the latest repository format.
* Repository accessible at: svn://XXX/Repository.
* Repository does not allow access to non authorized users.
* Repository allows read/write access to authorized users.
* Users are defined and authenticated using a simple passwd file.
* There is only one user named 'Test'. [Originally there had been
more but this has been simplified to help track down the problem.]
* Repository has path-based authorization enabled with the
following authz file:
> * = rw
which should give full access to all authenticated users. (Note
that originally this contained more complex rules, but has been
simplified to help track down the problem.]
All client operations tested with TortoiseSVN clients version 1.5.5
(uses Subversion client library release 1.5.4) & 1.5.1, as well as
command-line clients of version 1.5.4. All client machines also run Windows.
Now, when I tried connecting from any computer except one, I got the
expected behaviour: I could log in as user Test and perform
However, from one of the computers I got the following behaviour:
* I could checkout the repository.
* I could update the repository.
* When I attempted to commit, I would get an 'Authorization
failed.' error from the server.
The problem would go away if I turned off path based authorization
but would start right back up when I turned it on, and no amount of
server configuration tweaks, server restarts, client
deinstallations/manual cached data cleanup/reinstallations seemed to help.
In the end I noticed that the reason had been that on that one
computer the server 'connection string' had been typed in as:
Once I fixed that, everything works fine on that one computer as well
as all the others.
Now, this seems like something that should be either 'fixed'
(somehow) or explicitly warned about in the documentation and/or default
path-based authorization authz configuration file comments.
I can not understand hot the resulting behaviour (e.g. update &
checkout operations working but commit failing) came about, but I do not
think it should have. Perhaps when write access is checked in path based
authorization the name of the repository is read directly from the
user's connection string while when read access is checked the
repository name is taken from the actual path being accessed as reported
by the server's filesystem. If this is so, my suggestion would be to
make it consistent.
Hope this helps someone not have to pull out their hair as well... :-)
Received on 2008-12-17 18:11:55 CET