Executando um comando para cada linha de um arquivo com bash

Linux, Programação 1 Comment

Hoje precisei gerar o diff do svn de alguns arquivos cujo nomes estavam armazenados dentro de um arquivo.

Para gerar o diff no svn de cada um desses arquivos basta fazer o seguinte:

cat arquivos.txt | xargs -I {} svn diff -r 39177:HEAD https://svn/projeto{} > diff.txt

Onde o arquivo arquivos.txt contém o nome dos arquivos em cada linha, e o diff.txt será o diff de todos esses arquivos.

Excluindo arquivos não versionados no SVN

Linux, Programação No Comments

Para excluir arquivos não versionados no SVN você pode utilizar o seguinte comando:

svn status --no-ignore | grep '^\?' | sed 's/^\?      //'  | xargs -Ixx rm -rf xx

A primeira parte desse comando lista todos os arquivos alterados no SVN (modificados, adicionados, excluídos e não versionados), a segunda parte do comando filtra as linhas que começam com “?” (arquivos não versionados).

A terceira parte elimina o “?” e os espaços do começo das linhas e a quarta parte exclui arquivo por arquivo retornado pelos comandos anteriores.

Este texto foi adaptado do link http://www.guyrutenberg.com/2008/01/18/delete-unversioned-files-under-svn/

Trocando a localização de um repositório svn de uma working copy

Programação 1 Comment

Essa semana troquei o repositório svn de um sistema meu do meu desktop para o site http://www.xp-dev.com. Tive que trocar todas as working copies do meu notebook e desktop para referenciar essa nova localização.

Para fazer isso basta utilizar o seguinte comando:
svn sw –relocate <localização antiga> <nova localização>