Olá pessoal, vamos dar sequência a série de Quick Tips sobre Gerencia de Configuração desta vez falando sobe o Subversion. 

Subversion

Subversion é um software de controle de versão open-source que permite armazenar documentos de qualquer natureza, efetuando controle de acesso aos repositórios e mantendo as alterações através de um controle de revisões.

    Eu uso e recomendo os binários da CollabNet, os mesmos podem ser baixados no link abaixo, lembrando que neste artigo trabalharemos com a versão 1.5.6:

http://www.open.collab.net/downloads/subversion/svn1.5.html
    
    OBS: Para realizar o download será necessário se cadastrar no site.

Conceitos Básicos do Subversion


O Subversion trabalha com o conceito de repositório e cópia de trabalho (WorkingCopy). O Repositório é o local no servidor onde fica armazenado todos os IC, inclusive todo o histórico dos mesmos. A cópia de trabalho é uma cópia local de todos os IC.

Repositório

  • Armazena a informação na forma de uma árvore de arquivos e diretórios.
  • Clientes conectam-se ao repositório efetuando operações de leitura e escrita
  • Ao escrever (atualizar a informação no repositório), torna a mesma disponível a todos os clientes.
  • Ao ler, recebe as informações disponíveis no repositório.
  • Mantém um histórico de todas as alterações realizadas e seus respectivos autores.

Cópia de trabalho (Working Copy)

  • Trata-se da área privada de trabalho, cópia cliente dos arquivos do repositório.
  • É uma árvore de diretórios local contendo uma coleção de arquivos.
  • Podem ser compilados, editados e excluídos e também podem ser criados novos arquivos.
  • O Subversion não irá incorporar as mudanças feitas por outros usuários, nem disponibilizar as suas modificações sem que você solicite.
  • Após efetuar as alterações na sua cópia de trabalho, testar, e certificar-se de que funcionam, pode-se então atualizar as mesmas no repositório, tornando-as disponíveis para os outros desenvolvedores.

Revisões (Revision)

    O subversion chama de revisão o número da versão dos artefatos do repositório, a cada nova alteração realizada e atualizada no repositório é incrementada uma nova revisão.


    Configurando o servidor


    Execute o instalador baixado, a instalação do mesmo é bem simples, primeiro você terá que escolher as opções de instalação, a primeira opção é para instalação do serviço do Subversion Server e a segunda é para instalação do apache(Nos nossos exemplos não será necessário o apache pois utilizaremos o protocolo do próprio SVN).

     GC_P2_F1.GIF

    Na próxima tela você terá que informar a porta utilizada pelo servidor  subversion e também o diretório dos seus repositórios, todos os seus repositórios deverão ser criados dentro desta pasta para que o subversion localize os mesmos. Não esqueça de deixar marcada a opção para o subversion rodar como um serviço.
   
GC_P2_F2.GIF

    
    No próximo diálogo você terá que informar o diretório de instalação, e depois disso está feito, o subversion server está instalado.

    Agora que estamos com o server instalado podemos criar nossos repositórios, para criarmos um novo repositório temos que executar o aplicativo svnadmin que está no diretório do subversion.
    Para isso, acesse o prompt de comando do DOS e digite o comando para criarmos um novo repositório.     

    svnadmin create “C:\svn_repository\Meu_Projeto”

    Acabamos de criar um novo repositório chamado “Meu_Projeto” dentro do diretório especificado.

    Ao abrir a pasta do repositório veremos que o subversion criou algumas pastas para armazenar as revisões do repositório, controlar acesso, bloqueio de arquivos, dentre outras coisas.

GC_P2_F3.GIF
 
    Dentro do diretório conf do repositório, nós temos um arquivo chamado “svnserve.conf”, neste arquivos nós podemos definir se usaremos ou não controle de usuários para acessar o repositório.

    Abra este arquivo e localize os seguintes parâmetros:

    # anon-access = read
    # auth-access = write

     Ambos os parâmetros possuem três possíveis valores: none, read e write
    O primeiro parâmetro define a permissão para quem acessar o repositório sem ser autenticado, ou seja, sem login e senha.
    O seguinte parâmetro define a permissão para quem acessar o repositório com autenticação de usuário e senha.

    Para utilizar estes dois parâmetros, basta remover a “#” da frente dos mesmos, dessa forma, ficaria assim:

    anon-access = read
    auth-access = write
    
    Desse jeito, nós permitiremos que sejam realizadas leituras no repositório para usuários sem autenticação, porém para enviar algo ao repositório será necessária autenticação de usuário.

    Mais abaixo temos mais um parâmetro fundamental:

    # password-db = passwd

    Este parâmetro determina o nome do arquivo onde serão gravados os logins dos usuários. Retire a tralha deste parâmetro e deixe o valor padrão “passwd”. Agora podemos salvar e fechar este arquivo.

    Ainda neste diretório (conf), temos o arquivo passwd, nele podemos configurar os usuários e suas senhas, para isso basta incluirmos os usuários e suas senhas na seção [USERS] do arquivo.

[users]
ricardo = 123

Neste caso, defini o usuário ricardo com senha 123.

Existem outras configurações e possibilidades no servidor subversion, porém estas são as que considero essenciais para um controle de versões básico porém eficiente. As demais configurações assim como a criação de hook-scripts são assuntos para um outro artigo.
    
    O lado do servidor está completo, vale ressaltar apenas que dependendo das configurações de Firewall da sua rede, você terá que incluir a porta do subversion na lista de exceções do firewall senão não conseguiremos estabelecer conexão entre o client e o sever.

Na próxima Quick Tips falaremos do cliente TortoiseSVN.

Abraços e até lá.