Учитывая типичную конфигурацию Subversion / Apache, использующую SVNParentPath, с репозиториями, расположенными под /svn/
этим:
<Location /svn>
DAV svn
SVNParentPath /srv/source/svn/repos
SVNReposName "Subversion Repository"
AuthzSVNAccessFile /srv/source/svn/authz
Satisfy Any
AuthType Basic
AuthBasicProvider file
AuthName "Subversion Repository"
AuthUserFile /srv/source/svn/htpasswd
Require valid-user
</Location>
Есть ли способ переопределить эту конфигурацию для определенных репозиториев без необходимости размещать их по другому пути? То есть есть ли способ добавить Location
блок, как это ...
<Location /svn/my_special_repo>
SVNPath /srv/source/svn/repos/my_special_repo
AuthzSVNAccessFile /srv/source/svn/repos/my_special_repo/conf/authz
</Location>
... и он переопределяет конфигурацию, предоставленную в
Location
блоке для /svn
? Мои попытки сделать это с помощью описанной выше конфигурации были встречены странными и бесполезными ошибками в журнале ошибок Apache, такими как:
[Wed Feb 02 11:28:35 2011] [error] [client 10.10.209.120]
(20014)Internal error: Can't open file '/srv/source/svn/repos/svn/format':
No such file or directory
Все это, кажется, способ mod_dav_svn сказать мне, что я не могу делать то, что я пытаюсь сделать. Я открыт для решений или альтернатив!
РЕДАКТИРОВАТЬ : Ну, я вижу, что этот вопрос вызвал большой интерес у читателей. Напомню, что в итоге я могу создать конфигурации для каждого репозитория для всех наших существующих репозиториев, а затем отказаться от SVNParentPath
базовой конфигурации. Конфигурация Apache для репо минимальна, особенно при использовании чего-то вроде mod_macro ; трудная часть будет разделять глобальный файл authz. Если вы сделали это раньше, советы приветствуются.
Ответы:
Я не хочу видеть, что мой собственный вопрос томится там в списке вопросов без ответа, поэтому вот что мы сделали:
В конфигурации нашего основного сервера мы имеем:
Мы применили следующее
mod_macro
для репликации этого поведения для новых репозиториев:RewriteRule
Позволяет конфигурацию хранилища , чтобы переопределить<Location /svn/>
в главном конфигурации , которые могли бы соответствовать запросу.Благодаря этому становится довольно легко принять конфигурацию аутентификации и авторизации для каждого репозитория (вместо глобального
htpasswd
файла, используемого здесь).источник