Я настраиваю svn-сервер с помощью mod_dav_svn. Я хотел бы удовлетворить все следующие требования:
Вот текущая конфигурация:
<VirtualHost *:80>
ServerName repos.example.com
<Location />
DAV svn
AuthType Basic
AuthName "Log In"
AuthBasicProvider ldap
AuthzLDAPAuthoritative off
AuthLDAPURL ldap://***
AuthLDAPBindDN ***
AuthLDAPBindPassword ***
require valid-user
SVNListParentPath on
SVNParentPath /mnt/repos/svn
SVNIndexXSLT /repo-style/svnindex.xsl
AuthzSVNAccessFile /mnt/repos/svn-auth/access
</Location>
</VirtualHost>
Проблема с вышеизложенным заключается в том, что при поступлении запроса repos.example.com/repo-admin mod_dav_svn отвечает, что репозиторий не существует. Мне нужно придумать схему перезаписи, которая изолирует запрос для этого конкретного подкаталога и вместо этого обслуживает обычный html или php или что-то еще.
Я пробовал использовать перезапись или псевдонимы для достижения этой цели, но безуспешно. Любой вклад будет оценен.
В соответствии с этот вопрос о порядке объединения локаций около Apache 2 раздела в конфигурации только блок, объявляющий <Location /repo-style>
может перезаписать заявленное <Location />
доставка DAV svn
.
Как Directory
директива не будет иметь приоритета, единственный вариант - доставлять статический контент с Location
Например, спасибо за сценарий CGI, быстро написанный на вашем любимом языке сценариев.
Что ж, если я правильно понял ваш вопрос, у вас есть два варианта:
Первый вариант - предоставить доступ на чтение файлов всем, но для операций записи требуется авторизованный пользователь. Пример конфигурации:
<Location /svn>
DAV svn
SVNParentPath /var/svn
# Authentication type, name, etc.
# Authorization: Authenticated users only for non-read-only
# (write) operations; allow anonymous reads
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
Узнайте больше здесь: Одеяло контроль доступа
Второй вариант - использовать AuthzSVNAccessFile. Эта опция позволяет вам иметь более гибкую конфигурацию доступа для каждого каталога и проекта. Пример конфигурации:
[groups]
admin = john, kate
devteam1 = john, rachel, sally
devteam2 = kate, peter, mark
docs = bob, jane, mike
training = zak
# Default access rule for ALL repositories
# Everyone can read, admins can write, Dan German is excluded.
[/]
* = r
@admin = rw
dangerman =
# Allow developers complete access to their project repos
[proj1:/]
@devteam1 = rw
[proj2:/]
@devteam2 = rw
[bigproj:/]
@devteam1 = rw
@devteam2 = rw
trevor = rw
# Give the doc people write access to all the docs folders
[/trunk/doc]
@docs = rw
# Give trainees write access in the training repository only
[TrainingRepos:/]
@training = rw
Узнайте больше здесь: Как работает AuthzSVNAccessFile?