Introdução ---------- O Subversion_, 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_ 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 (Client-side_ e Server-side_) 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 ----------- .. target-notes:: .. _Subversion: http://subversion.tigris.org/ .. _Kompare: http://www.caffeinated.me.uk/kompare/ .. _Client-side: http://svn.collab.net/repos/svn/trunk/contrib/client-side/ .. _Server-side: http://svn.collab.net/repos/svn/trunk/tools/server-side/