O protocolo usado para acesso aos repositórios do
Subversion remotamente é o HTTP, por isso é necessário criar uma configuração no Apache para permitir o acesso.
Crie um arquivo .conf em /etc/httpd/conf.d com o seguinte conteúdo (ou /etc/apache2/conf.d em distribuições Debian ou /etc/apache2/conf-enabled no Ubuntu):
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
<IfModule mod_dav_svn.c>
Alias /repositorio01 "/opt/repositorio/"
<Location /_SVN_WEB>
DAV svn
SVNPath "/opt/repositorio/_SVN_WEB"
SVNListParentPath on
AuthzSVNAccessFile "/opt/repositorio/authz"
AuthBasicProvider ldap
AuthType Basic
AuthzLDAPAuthoritative off
AuthName "Usar login e Senha de rede"
AuthLDAPURL "ldap://controladorDominio.contoso.gov.br/OU=!RJ,DC=contoso,DC=com,DC=br?sAMAccountName?sub?(objectClass=*)"
AuthLDAPBindDN "usuarioldap@contoso.com.br"
AuthLDAPBindPassword "senha do usuário LDAP"
require valid-user
Satisfy Any
Options MultiViews Indexes
order deny,allow
deny from all
</Location>
</IfModule>
Onde:
-
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
Carregam os módulos necessários.
- DAV svn - diz que o conteúdo da pasta /opt/repositorio/_SVN_WEB não será listado e sim interpretado como se fosse um client do Subversion acessado o servidor Subversion.
- AuthBasicProvider ldap - diz ao Apache que o modo de autenticação é o LDAP.
- AuthName "Usar login e Senha de rede" - mensagem que o navegador/cliente Subversion irá apresentar quando acessar a URL.
- AuthLDAPURL "ldap://controladorDominio.contoso.gov.br/DC=contoso,DC=com,DC=br?sAMAccountName?sub?(objectClass=*)" - Hostname, ou e filtro de busca do seu servidor LDAP (colocar o mesmo configurado no iF.SVNAdmin se quiser).
- AuthLDAPBindDN "usuarioldap@contoso.com.br" - usuário com permissão de pesquisa no LDAP.
- AuthLDAPBindPassword "senha do usuário LDAP" - senha do usuário.
Obs.: o alias definido NÃO pode ter o mesmo nome do Location. Por exemplo:
Alias /ABC "/opt/repositorio/"
<Location /ABC>
Se fizer isso um erro de looping acontecerá no Subversion (também acho esquisito).
Salve, reinicie o Apache 2, teste a URL http://ip_servidor_svn/_SVN_WEB (deverá pedir login e senha de rede e o usuário tem que ter permissão configurada no iF.SVNAdmin) e acabou.
Deu trabalho, eu sei, mas muito melhor do que configurar as permissões manualmente no modo original do Subversion (alterando um arquivo texto que fica gigante com o passar do tempo com uma linha de configuração para cada usuário/pasta).
Existem outros softwares que fazem o mesmo que o iF.SVNAdmin.
- scmmanager - fácil de instalar, muitos plugins para integração com outros sistemas, fácil de configurar porém as opções de configuração de permissões não me atenderam.
- indefero - difícil de instalar e interface fraca.
- submin - fácil de instalar, simples e prático porém sem suporte a LDAP.
- Usvn - pra ser sincero não lembro porque não gostei desse - acho que tinha alguma coisa a ver com banco de dados.
- SubversionEdge - fácil de instalar - único pacote instala Apache + Subvesion + gerenciador, interface bonita e moderna, porém as permissões são configuradas editando um arquivo de texto - ou seja, não muda nada.
Sim, eu testei todos esses listados acima e escolhi o iF.SVNAdmin porque:
1. Eu tinha 3 coisas essenciais para serem atendidas:
- integração com LDAP
- fácil gerenciamento de muitos usuários no Subversion (cerca de 40 desenvolvedores internos e um não sei quantos externos)
- facilidade para alterar permissões no Subversion (isso atualmente é cerca de 30% do meu trabalho)
2. Precisei tirar uma dúvida e enviei um e-mail para o desenvolvedor do iF.SVNAdmin e... no dia seguinte tive uma resposta.
Espero que tenham gostado, o tutorial por si só acaba aqui, mas tem mais uma página de bônus (rsrs).