Alguém pode postar uma resposta melhor que use o Subversion diretamente, mas vou sugerir uma maneira que envolve a conversão para git
e depois de volta para o Subversion, porque o recurso git
filter-branch
é bom em isso.
Clone o antigo repositório do svn para um repositório local do git
git svn clone <url-for-repoOLD>
Suponho que o clone git
local está agora armazenado no diretório repoOLD
No clone do git, filtre tudo o que você não quer
Agora, remova tudo o que não deseja mais no novo repositório.
cd repoOLD
git filter-branch --force --index-filter \
'git rm -r --cached --ignore-unmatch dirA dirB dirC dirD' \
--prune-empty --tag-name-filter cat -- --all
... onde dirA dirB dirC dirD
são todos os diretórios que você não quer mais. Você precisa listar todos os que deseja remover.
Verifique este repo com ls
e git log
e tal para ter certeza de que ele contém o que você deseja.
Clone o novo svn repo em um repositório local do git
cd .. # (get out of repoOLD if you are still in there)
git svn clone <url-for-repoNEW>
Suponho que o clone git
local está agora armazenado no diretório repoNEW
Eu também assumirei que o repoNEW está completamente vazio neste ponto, porque você não comprometeu nada nem importou nada do repoOLD.
Importa tudo do clone git
do repoOLD
cd repoNEW
git remote add repoOLD ../repoOLD
git fetch repoOLD
git merge repoOLD/master
Agora empurre essas alterações de volta para o servidor svnNEW do svnNEW
git svn dcommit