Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
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.
Se o seu projeto j foi iniciado, necessrio import-lo para dentro do repositrio, para que ele possa ser controlado agora pelo SVN.
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.
Para terminar, habilitamos o mdulo dav_svn no Apache e o reiniciamos para que as novas configuraes sejam carregadas.
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 ...
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
$ svn add Teste.c A Teste.c $ svn add pasta/ A pasta A pasta/arquivo1.c A pasta/arquivo2.c
pasta
$ 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
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.