4) Criar um repositório de teste
Irei criar um repositório de teste no diretório /opt/repositorio. Como fazer isto também está descrito no arquivo README que acompanha os fontes do SVN.
$ svnadmin create /opt/repositorio
Vou criar um pequeno projeto na pasta /tmp/projeto, com alguns arquivos de exemplo que podem ser textos simples. Vamos colocá-lo no repositório.
$ svn import /tmp/projeto file:///opt/repositorio -m "Testando"
Para testar, faça o checkout para outra pasta local.
$ svn checkout file:////opt/repositorio project
Veja o conteúdo da pasta project. Lá estarão os arquivos. Faça um alteração nos arquivos e execute.
$ svn commit --message "Testando novamente"
Não retornando nenhum erro, o repositório foi criado corretamente.
5) Configurar o Apache2 para o SVN
Agora a parte mais interessante. Vamos fazer uma configuração básica, mas que é capaz de mostrar muito do que pode ser feito. Vamos mexer no /usr/local/apache2/conf/httpd.conf para indicar algumas informações básicas, dentre elas o nome do usuário (User) e grupo (Group) do servidor, o nome do servidor e a porta que ele vai usar.
Os campos de User e Group devem ficar assim:
User nobody
Group nobody
nobody é usado no Slackware por padrão. Na seção ServerName, irei deixar assim:
ServerName dominio.com.br:8090
Estou usando 8090 por escolha, pode ser qualquer outra porta. Também é preciso achar a seção Listen e deixá-la assim:
Listen 8090
Estes campos nem sempre são fáceis de serem achados no httpd.conf. Se você estiver usando o "vi", digite dois pontos, depois /<Padrão>, <Padrão> sendo a palavra procurada. Assim, você acha mais fácil os campos indicados. Porém, aconselho ao leitor procurar detalhadamente no texto, lendo os comentários, que são bastante instrutivos.
Isto deve bastar. Digite:
# /usr/local/apache2/bin/apachectl start
E depois tente abrir http://localhost:8090. Aparecendo alguma coisa que não seja erro de página não encontrada, tudo deu certo até agora.
Temos que verificar no mesmo /usr/local/apache2/conf/httpd.conf se a linha abaixo está descomentada:
LoadModule dav_svn_module modules/mod_dav_svn.so
Agora começaremos no final do httpd.conf o seguinte:
# Repositórios SVN
<Location /svn>
DAV svn
SVNParentPath /usr/local/svn
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /etc/svn/auth/svn-auth-file
Require valid-user
</Location>
Está uma configuração básica. O repositório já deve estar acessível. Os usuários precisarão estar inclusos no arquivo /etc/svn/auth/svn-auth-file para poderem acessar o repositório. Como o Apache está em execução como o usuário nobody, este usuário tem que ter permissão para escrever no repositório. Então:
# chown -R nobody.nobody /opt/repositorio
Para incluir um usuário no arquivo, basta:
# htpasswd -cm /etc/svn/auth/svn-auth-file joao
E entrar com usuário e senha para "joao". Isto é apenas a configuração básica. O svn ainda permite restringir acesso a diretórios ao mesmo tempo que acesso a outros dentro do repositório são liberados.
Mais informações em:
Lembrando que boa parte desta documentação direciona para os tutoriais do Apache2.