SVN: Você pode remover diretórios de um checkout local (não do repositório)?

Suponha que você tenha um diretório sob controle de subversão, que contenha alguns arquivos e toneladas de subdiretórios, assim:

file1.txt
file2.txt
file3.txt
dir1/
dir2/
dir3/
dir4/
:
dirXX/

Agora você precisa dos arquivos e alguns dos diretórios, mas não todos eles. Isso pode ser feito com o SVN. Apenas faça o checkout não recursivo:

svn checkout -N <URL>

Isso verifica apenas o primeiro diretório e os arquivos dentro. Nenhum subdiretório está incluído. Mesmo se você entrar no diretório de checkout e executar um "svn up", ele só atualizará os arquivos verificados anteriormente, ele não adicionará os diretórios. Agora você pode adicionar seletivamente os diretórios necessários, explicitamente atualizando-os. Por exemplo, se você precisar apenas de dir2 e dir4, pode ir para o diretório de checkout e executar

svn up dir2
svn up dir4

Se você executar um genérico "svn up"no futuro, ele só atualizará os arquivos e esses dois diretórios, não adicionará nenhum dos outros diretórios.

Agora, o problema: e se eu decidir mais tarde que não preciso mais de dir2? Como faço para me livrar dele? Não há como fazê-lo, além de excluir todo o checkout e recomeçar do zero.

Quando você acabou de excluir dir2, o próximo "svn up"trará de volta, como"svn status"é claro que mostra como falta agora ("! "na frente de seu nome). Executando um"svn remove"irá removê-lo, é claro, mas no próximo commit também irá removê-lo do repositório, o que não deve acontecer.

Mesmo o novo diretório esparso ("checkout superficial") do SVN 1.5 não é de uso aqui:

A implementação de checkouts superficiais do Subversion 1.5 é boa, mas não suporta alguns comportamentos interessantes. Primeiro, você não pode desvincular um item de cópia de trabalho. Executar svn update --set-depth vazio em uma cópia de trabalho de profundidade infinita não terá o efeito de descartar tudo, mas o diretório de cima - ele simplesmente irá errar.
- http://svnbook.red-bean.com/en/1.5/svn.advanced.sparsedirs.html

Isso é completamente impossível com o SVN? Alguém já surgiu com um trabalho inteligente para isso?

Apenas criar o diretório de checkout (sem SVN) e, em seguida, verificar os subdiretórios individuais do repositório diretamente como subdiretórios para esse diretório funcionará para os diretórios: agora, cada diretório é um check-out próprio, pode ser atualizado e não é mais necessário , você pode simplesmente deletar. No entanto, como obtenho os arquivos (por exemplo, file1.txt)? O SVN não permite fazer o check-out de arquivos individuais, você só pode fazer o checkout de diretórios inteiros.