Mover várias pastas de um repositório subversion para outro repositório subversion

1

Mover várias pastas de um repositório subversion para outro repositório subversion

Eu tenho um servidor centOS 6.4 e com o subversion 1.4.2 instalado. Eu tenho dois repositórios do subversion no meu servidor.

Estou usando 'repoOLD' há dois meses e agora criei outro repositório com o nome 'repoNEW'

'repoOLD' contém 100 pastas (projetos).

'repoNEW' acabou de ser criado e eu preciso copiar alguns projetos de 'repoOLD' para 'repoNEW'

Agora, o problema é como posso transferir várias pastas (projetos) do meu 'repoOLD' para 'repoNEW'

Eu tentei googling, mas não consegui encontrar tutoriais para mover várias pastas de um repositório subversion para outro repositório

    
por Gangadhar Jannu 29.01.2015 / 12:35

1 resposta

3

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
    
por 29.01.2015 / 14:04