Você está na página 1de 7

Instalao e Utilizao Bsica de um Repositrio SVN

Gedvan P. Dias <gedvan@gmail.com>. Abril de 2007.

Sumrio
Introduo ................................................................................................................... 1 Parte I Instalao ..................................................................................................... 2 1. Instalao dos pacotes ....................................................................................... 2 2. Criao dos repositrios ..................................................................................... 2 3. Configurao do acesso ..................................................................................... 3 Parte II Utilizao .................................................................................................... 4 1. Obtendo uma cpia de trabalho ......................................................................... 5 2. Editando, adicionando e removendo arquivos .................................................... 5 3. Submetendo as alteraes ao repositrio .......................................................... 6

Introduo
SVN ou Subversion um software para controle de verses, ou seja, um sistema que controla os arquivos envolvidos em um projeto. Esse tipo de sistema permite que vrias pessoas trabalhem no mesmo projeto, controlando as alteraes efetuadas por cada usurio, resolvendo os conflitos comuns nos arquivos alterados separadamente e mantendo a integridade do sistema. O funcionamento geral e a utilizao comum de um sistema de controle de verses bastante simples. Os arquivos do projeto ficam centralizados em um repositrio, que normalmente acessado atravs de uma rede. Cada usurio, antes de iniciar seu trabalho, solicita ao servidor uma cpia do projeto ou atualiza sua cpia local, caso j a tenha. O usurio, ento, pode editar, adicionar ou remover arquivos do projeto normalmente. Ao final, o mesmo submete suas alteraes de volta ao servidor, incorporando-as ao projeto. No caso de conflitos, o sistema pode resolver automaticamente os casos mais simples ou mostrar os problemas mais complexos para que o usurio remova as inconsistncias. Todas as alteraes so registradas e a qualquer momento possvel retornar a uma verso anterior ou sem determinadas modificaes.

Parte I - Instalao
Esta parte contm os passos para a instalao e configurao de um repositrio SVN e sua integrao com o servidor web Apache para que os projetos possam ser acessados via rede. A distribuio utilizada foi o Debian, mas os passos podem ser generalizados e facilmente aplicados a outras distribuies.

1. Instalao dos pacotes


Os pacotes necessrios so: subversion, apache2 e libapache2-svn. A maioria das distribuies disponibilizam esses pacotes em seus repositrios. No Debian, o comando :

# apt-get install subversion apache2 libapache2-svn

2. Criao dos repositrios


Agora preciso determinar onde ficaro armazenados os repositrios. Cada projeto pode ser armazenado em um local independente. Nesse tutorial, vamos criar uma pasta /var/lib/svn dentro da qual criaremos a pasta do nosso projeto.

# mkdir /var/lib/svn # cd /var/lib/svn # mkdir meu_projeto

O prximo passo criar a estrutura do repositrio no diretrio desejado e transferir as permisses dos arquivos para o servidor web (usurio www-data), pois atravs dele que ser feita a comunicao com o repositrio.

# svnadmin create /var/lib/svn/meu_projeto # chown -R www-data:www-data /var/lib/svn/meu_projeto

Se o seu projeto j foi iniciado, necessrio import-lo para dentro do repositrio, para que ele possa ser controlado agora pelo SVN.

# svn import /home/projetos/meu_projeto file:///var/lib/svn/meu_projeto -m comentrio

Obs: Note que estamos utilizando o protocolo file://, assumindo que o projeto est no

mesmo computador do servidor SVN, visto que o servidor web ainda no est configurado. Todavia, a importao pode ser postergada para depois que o servidor web esteja pronto e ento utilizar o protocolo http:// para fazer a importao via rede.

3. Configurao do Acesso
Os repositrios SVN sero acessados pela rede atravs de um servidor web, utilizando o protocolo WebDAV, que uma extenso do protocolo HTTP. O servidor web utilizado ser o Apache na sua verso 2. Como j foi dito, tambm necessrio ter instalada a biblioteca libapache2-svn. Primeiramente, vamos criar a uma localizao DAV apontando para o nosso repositrio e definir a forma de autenticao. Existem vrias tcnicas para fazer a validao do usurio, porm vamos utilizar a forma bsica de autenticao do apache, mediante usurio e senha. Entretanto, aconselhvel, para servidores pblicos, utilizar tcnicas mais seguras baseadas no protocolo HTTPS (HTTP Seguro) com SSL (Secure Shell Layer) ou atravs do mod_authz_svn do Apache. Os arquivos de configurao do Apache so distribudos e utilizados de maneira um pouco diferente em cada distribuio. Normalmente, eles esto localizados na pasta /etc/apache2 ou eventualmente em /etc/httpd2. No Debian, existem arquivos de configurao especficos para os mdulos. No nosso caso, vamos editar o arquivo /etc/apache2/modsavailable/dav_svn.conf .

# cria a localizao /svn no apache logo abaixo da raiz web # (ex.: http://meu.servidor/svn) <Location /svn> # cria a localizao DAV chamada svn DAV svn # indica o diretrio base do repositrio SVNParentPath /var/lib/svn # define o modo de autenticao e um nome AuthType Basic AuthName Repositrio SVN # indica o arquivo que contm as senhas AuthUserFile /etc/apache2/dav_svn.passwd # fora a autenticao do usurio Require valid-user </Location>

O prximo passo criar o arquivo das senhas e adicionar os usurios. Note que a opo -c utilizada apenas na primeira vez, para criar o arquivo.

# htpasswd -c /etc/apache2/dav_svn.passwd usuario1 # htpasswd /etc/apache2/dav_svn.passwd usuario2

Para terminar, habilitamos o mdulo dav_svn no Apache e o reiniciamos para que as novas configuraes sejam carregadas.

# a2enmod dav_svn # /etc/init.d/apache2 restart

Parte II Utilizao
Veremos agora alguns comandos bsicos para o acesso e utilizao de um repositrio SVN em um projeto. Para acessar o repositrio, basta ter instalado no sistema o pacote subversion e, obviamente, ter acesso ao servidor onde esto os arquivos. Existem diversos programas grficos para acesso a repositrios SVN, inclusive algumas IDEs j vm com suporte ou plugins isso, entretanto, vamos estudar nesse tutorial, apenas os comandos do cliente padro, presente no pacote subversion, em linha de comando. Primeiramente, vamos fazer algumas configuraes no cliente atravs do arquivo

~/.subversion/config (~ a pasta do usurio /home/usuario, por exemplo). Vamos definir o editor, onde sero escritas as mensagens sobre as modificaes no sistema e algumas configuraes de acesso.

# na seo auth, podemos escolher entre armazenar os dados do usurio # e a senha no cliente. Por segurana, vamos desabilitar essa funo [auth] store-passwords = no store-auth-creds = no # vamos definir um editor de texto para escrever as mensagens [helpers] editor-cmd = vim ...

1. Obtendo uma cpia de trabalho


Se no temos ainda uma cpia de trabalho do projeto, ou seja, se a primeira vez que vamos trabalhar no projeto, necessrio fazer o checkout. Esse comando ir trazer uma cpia da ltima verso do projeto para o nosso sistema, na pasta onde o executamos.

$ svn checkout http://servidor/svn/nome_do_projeto

Se j temos a cpia do projeto em nosso sistema, ou seja, se j demos o checkout anteriormente, no necessrio faz-lo de novo para voltar a trabalhar no projeto. preciso apenas atualizar a cpia local para a ltima verso de trabalho. Isso feito com o comando svn update. importante garantir que estamos sempre trabalhando com a ltima verso do projeto, para no ignorar alteraes feitas por outros usurios (a menos que saibamos realmente o que estamos fazendo).

$ svn update

2. Editando, adicionando e removendo arquivos


Uma vez que temos a cpia de trabalho local, podemos editar livremente os arquivos do projeto. Entretanto, para adicionar ou remover arquivos do projeto, no basta somente crilos ou remov-los do sistema de arquivos. Isso tem que ser feito atravs do cliente SVN, afinal de contas, podemos ter arquivos e pastas na estrutura de diretrios do projetos que no fazem parte do projeto. Vejamos os comandos para adicionar um arquivo ou diretrio existente ao projeto.

$ svn add Teste.c A Teste.c $ svn add pasta/ A pasta A pasta/arquivo1.c A pasta/arquivo2.c

Para remover ou renomear arquivos do projeto.

$ svn del pasta/ D pasta/arquivo1.c D pasta/arquivo2.c

pasta

$ svn rename Teste.c Teste2.c A Teste2.c D Teste.c

O comando svn help mostra uma lista das operaes disponveis.

3. Submetendo as alteraes ao repositrio


Ao trmino do ciclo de trabalho, necessrio enviar as alteraes realizadas ao repositrio, incorporando-as ao projeto. preciso ter ateno neste passo para manter a integridade do sistema em virtude das alteraes do diversos usurios. Antes que submeter as alteraes, necessrio atualizar novamente o sistema para receber as possveis alteraes feitas durante o perodo de edio desde a ltima atualizao. Para isso, executamos novamente o comando svn update.

$ svn update rea de autenticao: <http://servidor> Repositorio SVN Senha para 'usuario1': G src/apresentacao/Diagrama.java C src/apresentacao/Aplicacao.java Atualizado para reviso 7.

Se algum outro usurio tiver submetido alteraes nos mesmo arquivos que tambm editamos, na hora que executarmos o update, o SVN tentar mesclar as alteraes submetidas com as alteraes locais. Se as alteraes ocorreram em partes distintas do cdigo, o SVN junta os dois arquivos em um s, com as alteraes dos dois (ou mais) usurios. Isso indicado pela letra G (merged) na frente do nome do arquivo. Se as alteraes foram feitas no mesmo trecho de cdigo, o SVN no consegue mesclar os arquivos e deixa isso a cargo do usurio. Isso indicado pela letra C (conflict) antes do nome do arquivo. So criadas 4 cpias do arquivo em conflito.

Uma cpia com o nome do arquivo original indica, no meio do cdigo, as alteraes que foram realizadas por todos;

Uma cpia, com o nome prefixado pelo nmero da reviso anterior contm o arquivo antes das modificaes;

Uma cpia, com o nome prefixado pela reviso atual, contm as alteraes realizadas

pelos outros usurios;

Por fim, uma cpia com o nome prefixado pela palavra .mine contendo as alteraes realizadas pelo usurio.

Nesse momento, deve-se resolver os conflitos manualmente, editando os arquivos e vendo quais partes do cdigo devem permanecer na cpia principal. Feito isso, pode-se remover as demais cpias e realizar a submisso com o comando svn commit. Antes de enviar os arquivos, ser aberto o editor escolhido para comentar as alteraes realizadas pelo usurio.

$ svn commit rea de autenticao: <http://servidor> Repositorio SVN Senha para 'usuario1': Enviando apresentacao/Aplicacao.java Enviando apresentacao/Diagrama.java Transmitindo dados do arquivo .. Commit da reviso 8.

Para terminar, importante lembrar que as alteraes submetidas ao repositrio vo ser enviadas para todos os usurios quando eles atualizarem suas cpias de trabalho. Portanto, deve-se submeter as alteraes apenas depois de terem sido bem testadas, para no impedir o trabalho dos demais usurios com problemas causados por alteraes que eles desconhecem. Outra recomendao importante sempre descrever detalhadamente as alteraes realizadas em cada commit, para que os demais usurio possam se manter atualizados com relao as modificaes.

Você também pode gostar