Remover recursivamente diretórios .svn do Subversion

Para quem programa, é comum utilizar Subversion, uma aplicação que controla revisões nos códigos.

Você cria um repositório em um servidor remoto e mais de um programador pode baixar o mesmo projeto e fazer suas modificações.

Quando o programador envia o projeto para o repositório o Subversion mescla todas as alterações impedindo que haja perda e sobrescrição.

Um problema é que toda cópia enviada para o repositório tem pastas .svn que contém metadata. Essas pastas ficam na máquina local e, eventualmente, ao atualizar, há conflito de versões impossibilitando que o programador atualize seu projeto e/ou o repositório.

Para resolver isso, basta remover as pastas .svn.

Atenção: a responsabilidade por qualquer ação feita em seu sistema é só sua! Na dúvida, não faça nada.

1) Abra um terminal;

2) find . -type d -name .svn; rm -rf -v `find /diretorio/ -name *.svn`

3) rm -rf em todas as pastas encontradas;

4) Opção 1: rm -rf `find . -type d -name .svn` 

5) Opção 2: rm -rf  -v `find . -type d -name .svn` 

A opção do ítem 4 procura e apaga tudo o que existir mas não mostra a lista das pastas e a do ítem 5 é no modo verbose, ou seja, procura e apaga tudo o que existir informando o que o comando fizer.

Também fiz um script para facilitar essa remoção bastando criá-lo em qualquer lugar do diretório do usuário com permissão de execução (+x).

#!/bin/bash
echo “Script para remover pastas .svn de projetos Subversion”
echo “Lista das pastas encontradas: ”
find . -type d -name .svn find /diretorio/ -name *.svn
echo -n “Confirma remoção completa (S/N)?”
read opcao
if [ opcao == “S” ]
then
rm -rf `find . -type d -name .svn` rm -rf -v `find /diretorio/ -name *.svn`
echo “Verificando se as pastas foram removidas…”
find . -type d -name .svn find /diretorio/ -name *.svn
echo “Concluído”
else
echo “Finalizando programa…”
fi

É isso aí, abraço.

ATUALIZAÇÃO – 05/03/2013: os comandos antigos, que estão riscados, funcionam mas os que adicionei são mais eficazes.

Anúncios