quinta-feira, 25 de junho de 2009

Ubuntu + subversion

Encontrei materiais muito bons então vou utilizá-los em opção à escrever:

São eles:

http://www.leoserra.uaivip.com.br/leonix/documentacao/subversion-usando.html

http://www.ronaldorigoni.com.br/instalar-subversion-e-apache-ubuntu/

ensinar como usar o Subversion para fazer controle de versão.

O que é Subversion?

O objetivo do projeto Subversion é construir um sistema de controle de versão que seja um substituto para o CVS. O Subversion é liberado sob a licença Apache/BSD-style.

Controle de versões

Com o controle de versões podemos gravar o histórico de todos os nossos arquivos. Por exemplo às vezes são criados problemas quando o logicial é modificado, e o programador pode detectar isto muito tempo depois da modificação, acarretando um problema grave para descobrir onde aconteceu tal falha. Com o controle de versões podemos restaurar facilmente as versões antigas para ver exatamente qual mudança gerou tal problema.

Poderíamos, é claro, guardar todas as versões de todos os arquivos que criamos sem a ajuda de uma ferramenta de controle de versão. Porém, além do desperdício de um espaço considerável em disco, o Subversion armazena todas as versões de uma forma inteligente, guardando apenas as diferenças entre as versões. O que é muito mais vantajoso.

Podemos realizar o controle de versão para todo tipo de arquivo. Não apenas para arquivos de codigo fonte, mas qualquer tipo de arquivo, incluindo arquivos binarios.


Instalação e configuração:

#apt-get install subversion libapache2-svn apache2

Após o processo terminar, precisamos habilitar o modulo webdav na configuração do apache.


# vi /etc/apache2/mods-enabled/dav_svn.conf

O linha onde diz é onde o diretório raiz de repositórios onde o subversion estará escutando quando for acessado http://meuhost/svn , deixe ela com a configuração abaixo, se a mesma estiver com um comentário remova.

Agora precisamos habilitar o modulo dav, descomente a linha abaixo.

DAV svn

O SVNParentPath é onde será o diretório padão de repositórios, indicado quando vc usará mais de um repositório, descomente a linha abaixo:


SVNParentPath /var/lib/svn

Agora necessitamos habilitar a autenticaçao, utilizaremos o modo basic que é baseado em arquivo, para isso descomente as linhas abaixo:


AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd

Antes de salvar o arquivo e fecha-lo, não esqueça de descomentar a ultima linha onde diz:

</Location>

Pronto, só falta adicionarmos os usuários, para isso utilize o comando abaixo:

#htpasswd -cm /etc/apache2/dav_svn.passwd seu_usuario

Importante, este comando serve apenas para quando se está criando o primeiro usuário, para outros usuários
deve ser utilizado o mesmo comando sem a opção -c , pois ela faz a criação do arquivo, deve ser utilizado apenas a opção -m para que a senha armazenada seja com HASH MD5

Será solicitado uma senha e uma confirmação de senha.

Agora vamos criar um repositório de teste, para isso digite o comendo abaixo:

# svnadmin create /var/svn/teste

Agora apenas precisamos reiniciar o apache, utilize o comando abaixo:

#
/etc/init.d/apache2 force-reload

Para testar se está funcionando acesse http://"hostdosvn/svn/teste , se aparecer uma página contendo "Revision 0" tudo funcionou corretamente.



Ciclo básico de trabalho

  1. Criar uma copia local do repositório:

    $ svn checkout http://svn.exemplo.com.br/svn/

    Atenção

    Esta etapa só é necessária ser executada uma vez.

  2. Atualizando a copia local do repositório:

    $ svn update
  3. Altere os arquivos através do seu editor predileto e/ou executando comandos de alteração da estrutura do repositório.

  4. Atualizando a copia local do repositório:

    $ svn update
  5. Enviando as alterações para o repositório:

    $ svn commit

Comandos

  • Criando uma copia local do repositório:

    $ svn checkout http://svn.exemplo.com.br/svn/

    Atenção

    Isto ira criar uma pasta chamada svn. Todos os outros comandos deverão ser executados dentro desta pasta.

  • Atualizar o repositório local:

    • Atualizando a copia local do repositório:

      $ svn update
    • Atualizando a copia local do repositório para a revisão 3:

      $ svn -r 3 update
    • Atualizando trem para a revisão 3 do repositório:

      $ svn -r 3 update trem
  • Alterando a estrutura do repositório:

    • Adicionando trem ao repositório:

      $ svn add trem

      Nota

      A adição de pasta é realizada no modo recursivo. Opcionalmente pode ser passado o parâmetro -N que tornara a adição não recursiva.

    • Removendo trem do repositório:

      $ svn delete trem

      Atenção

      A remoção de pasta é realizada no modo recursivo.

      Nota

      A remoção não deve ser feita através do comando rm, pois ela só será apagada após o envio das operações realizadas localmente para o repositório.

    • Criando uma copia de trem para coisa no repositório:

      $ svn copy trem coisa

      Nota

      A vantagem da utilização deste comando é que ele realiza a copia de trem para coisa através do tradicional utilitario cp e em seguencia realiza a adição de coisa ao repositório.

    • Alterando o nome de trem para coisa no repositório:

      $ svn move trem coisa

      Nota

      A vantagem da utilização deste comando é que ele move de trem para coisa através do tradicional utilitario mv, em seguencia realiza a adição de coisa ao repositório e a remoção de trem do repositório.

    • Criando a pasta trem no repositório:

      $ svn mkdir trem

      Nota

      A vantagem da utilização deste comando é que ele cria a pasta trem através do tradicional utilitario mkdir e em seguencia realiza a adição de trem ao repositório.

  • Monitoramento o repositório

    • Visualizar o estado de cada arquivo, comparando a copia local com as informações coletadas do repositório no servidor durante a ultima atualização:

      $ svn status
    • Visualizar informações sobre o repositório:

      $ svn info
    • Visualizar os relatórios das mudanças no repositório:

      $ svn log
    • Visualizar os relatórios das mudanças no repositório mostrando apenas as revisões de 3 a 7:

      $ svn -r 3:7 log
    • Visualizar as diferenças entre as revisões de 3 a 7 para trem do repositório:

      $ svn -r 3:7 diff trem
    • Visualizar trem da revisão 3 do repositório:

      $ svn -r 3 cat trem
    • Visualizar a estrutura do repositório da revisão 3:

      $ svn -r 3 list
  • Enviando as alterações para o repositório:

    • Envio simples:

      $ svn commit

      Nota

      Após a execução do comando será aberto o editor definido pelo variavel $EDITOR, dentro do editor é recomendado que seja feito um pequeno resumo de quais foram as alterações realizadas.

    • Envio simples somente das operações realizadas em trem:

      $ svn commit trem
    • Envio sem abrir o editor, usando parametro para o resumo:

      $ svn commit -m "Texto explicando as alterações realizadas"
    • Envio sem abrir o editor, usando o arquivo explicacao.txt para o resumo:

      $ svn commit -F explicacao.txt

      Atenção

      O arquivo explicacao.txt não deve fazer parte do repositório, pois isto pode causar um ciclo redundante!

Dicas

  1. O Subversion é seu amigo e irá lhe ajudar.

    • Quando houver alguma duvida sobre quais comandos existem, execute:

      $ svn help
    • Quando houver alguma duvida sobre algum comando, execute:

      $ svn help comando
  2. O Subversion permite que seja feito acesso direto ao repositório. A vantagem disto é que não é necessario possuir uma copia local do repositorio para rodar os comandos.

    $ svn mkdir http://svn.exemplo.com.br/svn/trem

    Nota

    Muitos comandos permitem o acesso direto ao repositório, através da ajuda do Subversion é possivel saber se um comando permite ou não isto!

    Atenção

    Alguns comandos ao realizarem acesso direto ao repositório, ao fim do comando realizam um commit imediato.

  3. Com o intuito de facilitar a utilização do Subversion, ele possui abreviações para seus comandos. Abaixo esta a tabela com estas abreviações.

    Tabela 3. Abreviações

    Comando Abreviação (ções)
    checkout co
    commit ci
    copy cp
    delete del, remove, rm
    diff di
    help ?, h
    list ls
    move mv, rename, ren
    status stat, st
    update up

6 comentários:

  1. opa,
    Tutorial completíssimo, parabéns.
    Valeu pela referência.
    Abraços
    Ronaldo

    ResponderExcluir
  2. Excelente Tutorial. Me ajudou bastante.
    Parabéns !

    ResponderExcluir
  3. Valeu cara, ótimo tutorial.

    ResponderExcluir
  4. Ótimo cara, que bom que ajuda! Desde a época que postei esse conteúdo até hoje já ouvi falar, e acabei por ficar curioso com relação ao assunto, sobre GIT. Talvez ainda me aventure por lá...dae posto aqui se der certo...

    ;)

    ResponderExcluir