I'm trying to configure SVN web access on Apache2 under Windows Server 2008 for different write permissions.
I have next Apache2 conf:
<Location /svn>
SVNParentPath "E:\SVN"
DAV svn
SVNListParentPath on
AuthType Basic
AuthName "Subversion repositories"
Require valid-user
AuthUserFile svn-auth.txt
AuthzSVNAccessFile svn-acl.txt
</Location>
<Location /svn/foobar>
SVNParentPath "E:\SVN\foobar"
DAV svn
SVNListParentPath on
AuthType Basic
AuthName "Subversion repositories"
Require valid-user
AuthUserFile svn-auth.txt
AuthzSVNAccessFile svn-acl.txt
</Location>
E:\SVN
is a root directory for all repositories - I want to list the all. It contains E:\SVN\test
- is a project repository.
and E:\SVN\foobar
- is a sub-root directory containing
E:\SVN\foobar\foo
and E:\SVN\foobar\bar
- project repositories.
File svn-auth.txt
contains a number of user passwords generated by htpasswd.exe
File svn-acl.txt
contains a write access rules, but it doesn't work! Event it contains only one global permission:
[/]
* = rw
What is the different between SVNPath
and SVNParentPath
in Apache2 config for SVN? Maybe it would be make a sense?
And of course it doesn't work too if I add a group or a user:
[groups]
full = abatishchev
[/]
* = r
@full = rw
abatishchev = rw
I'm getting 403 Forbiden
.
What am I doing wrong? TIA!
Update: I found a record from error.log:
The URI does not contain the name of a repository. [403, #190001]
What could it mean?
SVNPath
is for one repository, SVNParentPath
is for a root directory containing several repositories. So you should remove your second location in the Apache configuration file because it conflicts with the first if you try to access http://<host>/svn/foobar
.
You should put absolute paths for the access and authentication files, make sure the Apache service has read/write access to the parent directory and all the repositories, and read access to those access and authentication files, it is often overlooked in manual installations.
For example:
<Location /svn>
RedirectMatch ^(/svn)$ $1/
SVNParentPath E:\SVN
DAV svn
SVNListParentPath on
AuthType Basic
AuthName "Subversion repositories"
Require valid-user
AuthUserFile C:\SVN\conf\svn-auth.txt
AuthzSVNAccessFile C:\SVN\conf\svn-acl.txt
</Location>
You will find all the necessary information in Version Control with Subversion (this is the link to the latest version, though the Apache configuration settings haven't changed lately).
Then you should be able to specify global or individual permissions for groups and users, for your repositories. Examples of that can be found here, with the name you gave:
[groups]
full = abatishchev, anotherguy
main = abatishchev
[/]
* = r
@full = rw
abatishchev = rw
[foobar:/]
* =
@main = rw
full = r
[otherproject:/]
@main = rw
full = r
In this example, you have set general rules in [/]
, then particular rules that will prevail for foorbar
(and everything below), and otherproject
. You can even specify specific rules for individual directories of a repository.
Changing Apache config
<Location /svn>
to
<Location /svn/>
fixes the problem of 403
error on directory listing
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With