segunda-feira, 21 de janeiro de 2013

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

 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

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!

Nenhum comentário :

Postar um comentário