Removendo recursivamente diretórios .svn

Comecei a migrar essa semana todos meus projetos para o SVN. Acontece que, se quisermos baixar o arquivo de um SVN e migrar para outro, temos problemas porque é criado um diretório .svn/ dentro de todos subdiretórios. Para resolver este problema, criei um alias que remove recursivamente os diretórios .svn/ da pasta corrente.

Com o comando find conseguimos achar os diretórios .svn:

$ find . -type d -name .svn

./.svn

./sourceA/.svn

./sourceB/.svn

./sourceB/module/.svn

./sourceC/.svn

Podemos, junto ao find, passar o comando rm -rf:

$ rm -rf `find . -type d -name .svn`

Podemos agora criar um alias e adicionar ao profile do usuário:

$ echo “alias csvn=’echo ‘removendo pastas .svn/’; rm -rf `find . -type d -name .svn`’” >> ~/.bash_profile
$ . ~/.bash_profile
$ svn checkout svn://server.com/svn/project

A project/index.php

A project/sourceA/a.php

A project/sourceA/a1.php

A project/sourceA/a2.php

A project/sourceB/b.php

A project/sourceB/module/lib.php

A project/sourceC/c.php

Checked out revision 15.

$ cd project

$ csvn

removendo pastas .svn/

Agora podemos fazer checkout de um SVN, jogar para outro e versionar normalmente.

Observações:

-> Tomar muito cuidado para não utilizar este comando na raiz ou em algum diretório perigoso.
-> Não é recomendável utilizar este alias como root.

É isso! Valeu!