Dicas para usar o Subversion (SVN) no Linux

Esta contribuição está participando do sorteio da Mochila Targus Matrix. Envie seu texto e participe você também, você contribui com outros usuários e ainda pode faturar uma mochila novinha em folha para o seu laptop. Saiba mais sobre como participar.

Sobre o Autor:

Rafael Bruno Cavalhero de Oliveira
rafaelbco@gmail.com

Introdução

O Subversion [1], também conhecido como SVN, é um sistema de controle de versões open-source. Estas dicas são destinadas a quem já é usuário do programa no Linux. São técnicas simples que eu uso para facilitar a minha vida.

Filtrando arquivos indesejáveis

O comando “svn status“ mostra os arquivos alterados na sua cópia de trabalho. Porém, alguns arquivos que não estão sob o controle de versões (e nem deveriam
estar), como os .pyc (bytecodes do Python) e .class (bytecodes do Java), aparecem na listagem. A solução que eu adotei foi criar o script svn_status.sh para usar no lugar do comando “svn status”. Eis a listagem do script que filtra esses dois tipos de arquivos::

#!/bin/bash
svn status | grep -v “\.\(pyc\|class\)”

Altere o script de acordo com suas necessidades e o coloque em algum diretório que esteja no seu PATH.

Acompanhando alterações feitas por outras pessoas

Esse script mostra o log das alterações feitas no repositório mas que não estão na sua cópia de trabalho ainda. Em outras palavras, são as alterações que serão aplicadas à cópia local quando você executar um “svn update”. O script é útil para acompanhar alterações feitas por outras pessoas. Listagem:

#!/bin/bash
svn log -v -rBASE:HEAD

Altere o script de acordo com suas necessidades e o coloque em algum diretório que esteja no seu PATH.

Visualizando diferenças graficamente

O comando “svn diff“ mostra as diferenças entre duas revisões, no formato do programa diff do Unix. O Kompare [2] permite visualizar diferenças entre arquivos e diretórios em uma interface gráfica, e trabalha também com o formato do diff. Para visualizar a saída do comando “svn diff“ no kompare basta fazer:

svn diff | kompare –

Nesse caso serão mostradas as alterações locais na cópia de trabalho. O “svn diff“ aceita outras opções para definir o que deve ser comparado.

Definindo um editor para a mensagem de commit

É possível definir um editor que será invocado automaticamente ao executar um “svn commit“, para editar a mensagem de commit. Assim você não precisa especificar a mensagem diretamente na linha de comando (opção -m), ficando mais fácil escrever mensagens com mais de uma linha.

Edite o arquivo “~/.subversion/config“. Descomente as linhas contendo “[helpers]“ e “editor-cmd“. Edite esta última linha colocando o nome do editor a ser usado (por exemplo: “vi“ ou “nano“).

Scripts no site do Subversion

Existem alguns scripts prontos no site do Subversion [3, 4] que são muito úteis. Eu destaco:

  • showchange.pl: Mostra a mensagem de commit e as diferenças (“svn diff“) entre uma revisão e a revisão anterior. Você pode redirecionar a saída desse comando para o Kompare e visualizar as diferenças graficamente.
  • search-svnlog.pl: Faz buscas no log do repositório.
  • bash_completion: Faz o bash completar os comandos do Subversion. Por exemplo,
  • digite “svn upgr“ e pressione TAB, o bash completará para “svn upgrade“.

Referências

[1] http://subversion.tigris.org/
[2] http://www.caffeinated.me.uk/kompare/
[3] http://svn.collab.net/repos/svn/trunk/contrib/client-side/
[4] http://svn.collab.net/repos/svn/trunk/tools/client-side/