Dada uma configuração típica do Subversion / Apache usando SVNParentPath, com repositórios hospedados /svn/
assim:
<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>
Existe uma maneira de substituir essa configuração para repositórios específicos sem precisar hospedá-los em um caminho diferente? Ou seja, existe alguma maneira de adicionar um Location
bloco como este ...
<Location /svn/my_special_repo>
SVNPath /srv/source/svn/repos/my_special_repo
AuthzSVNAccessFile /srv/source/svn/repos/my_special_repo/conf/authz
</Location>
... e substituiu a configuração fornecida no
Location
bloco /svn
? Minhas tentativas de fazer isso com a configuração acima foram recebidas com erros estranhos e inúteis no log de erros do Apache, como:
[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
Tudo isso parece ser a maneira de mod_dav_svn me dizer que não posso fazer o que estou tentando fazer. Estou aberto a soluções ou alternativas!
EDIT : Bem, posso ver que essa pergunta gerou muita empolgação entre os leitores. Para o registro, o que posso acabar fazendo é gerar configurações por repositório para todos os repositórios existentes e abandonar a SVNParentPath
configuração baseada. A configuração do Apache por repo é mínima, especialmente usando algo como mod_macro ; a parte mais difícil será dividir o arquivo authz global. Se você já fez isso antes, as dicas são apreciadas.
Respostas:
Eu odeio ver minha própria pergunta definhando lá na lista de perguntas não respondidas, então aqui está o que fizemos:
Na nossa configuração principal do servidor, temos:
Adotamos o seguinte
mod_macro
para replicar esse comportamento para novos repositórios:A
RewriteRule
permite que a configuração do repositório para substituir o<Location /svn/>
na configuração principal que de outra forma corresponder ao pedido.Com isso, torna-se relativamente fácil adotar a configuração de autenticação e autorização por repositório (em vez do
htpasswd
arquivo global usado aqui).fonte