Quick and dirty: subindo um controle de versão com suporte a http

Escolher o controle de versão para o seu projeto é uma decisão muito importante. Neste post vamos subir o famigerado Subversion, que chamarei apenas de svn daqui em diante, no servidor HTTP apache, e assim servir o projeto através da in{ter,tra}net.

Aviso: O SVN é velho, centralizado, tem sérios problemas relativos a mover e apagar pastas, em contrapartida tem integração sólida com IDE’s e ambientes gráficos. É também um dos mais rápidos de configurar, se não o mais rápido de todos.

Abaixo nossa agenda, Curtinha, diga-se de passagem:

  1. Instalar o Apache HTTP Server no openSUSE 11.4
  2. Instalar o svn e o mod_svn no openSUSE 11.4
  3. Configurar o mod_svn
  4. Criar o repositório SVN
  5. Configurar usuários e acessos ao repositório

Já no openSUSE, abra um terminal qualquer e vire root. Instale o Apache da seguinte maneira:

zypper in apache2

As configurações irão para /etc/apache2 e os arquivos servidos serão encontrados primariamente em /srv/www

O svn e o mod_svn vem de maneira análoga:

zypper in subversion-server

Devemos agora ativar o suporte a webdav, ao módulo do svn e ao módulo de autorização na configuração do apache. OBS: este passo parece ser bem específico de openSUSE…


a2enmod dav
a2enmod dav_svn
a2enmod authz_svn

Seguindo com o tutorial, vamos editar a configuração do repositório. que está em /etc/apache2/conf.d/subversion.conf.

O arquivo de configuração presente já possui excelentes exemplos, apresento apenas uma alternativa aqui: a de repositório único.

Use o seu editor favorito: vi, kate, gedit, o que o openSUSE lhe der mais facilmente, e troque a configuração padrão por essa daqui:

# /etc/apache2/conf.d/subversion.conf
<Location /repo>
	DAV svn
	SVNPath /srv/www/svn/repo
	AuthType Basic
	AuthName "simplest repo"
	AuthUserFile /srv/www/svn/svn-users
	AuthzSVNAccessFile /srv/www/svn/svn-access-control
	Require valid-user
</Location>

Explicando um pouco: ao navegar pelo host rodando o apache, teremos um contexto chamado /repo que corresponderá a um repositório chamado repo criado em /srv/www/svn. O arquivo de senhas e o de autorização também vão nesta pasta, facilitando assim o processo de backup. O resto da configuração serve para ativar o webDAV, autenticação, um título para a autenticação e sempre requisitar um usuário válido.

Não inicie ainda o apache. Temos que seguir para /srv/www para criarmos a pasta svn e dentro dela o repositório, o arquivo de senhas e o de autorização:


cd /srv/www
mkdir svn
cd svn
touch svn-users
touch svn-access-control
svnadmin create repo

Precisaremos de um usuário para operar neste repositório. Criaremos o usuário e a senha com o htpasswd2:


cd /srv/www/svn
htpasswd2 -b svn-users joao senhajoao

Agora devemos adicionar este conteúdo no arquivo svn-access-control:

[repo:/]
joao = rw

Estamos pertinho do final. Falta apenas ajustar as permissões. vamos ‘dar’ o repositório para o usuário que roda o processo do apache:

chown -R wwwrun:www /srv/www/svn

Pronto, pode rodar o apache!

service apache2 start

Abra o firefox e siga para http://localhost/repo (supondo que você esteja na mesma máquina do repositório) e a caixa de autenticação surgirá. entre com o usuário e senha que criamos e fim.

A integração do svn com as mais diversas ferramentas é grande, dada a sua idade. Ferramentas como tortoise, kdesvn e o plugin subversive para eclipse falam por si mesmos.

É também um repositório de fácil backup e de fácil migração: quando a tecnologia evoluir e você for migrar para um controle distribuído de versão, há boas ferramentas proporcionando a migração para no novo versionador.

E você vai querer migrar, cedo ou tarde: as principais reclamações que recaem sobre este velho guerreiro são seus problemas com repositórios muito grandes em histórico e tamanho de arquivos e especialmente o problema que ele tem com a deleção de pastas com subpastas. Aqui a dica que dou é usar algum explorador de repositório e deletar as cosias através dele, e só então atualizar a cópia local.

Sem mais, até a próxima!

Deixe um comentário