Movendo um repositório SVN para outro servidor

1 minutos de leitura

Não vou negar, existem milhões de sites oferecendo soluções simples para mudar um servidor SVN para outro local (atualmente 78 mil, mas não vêm ao caso). Daí você se pergunta, mas por que eu estou escrevendo mais esse post sobre esse assunto, e o que diferencia ele dos outros 78 mil?

Isso é simples de responder. Todos deixam os tutoriais deixam de fora um importante passo no processo: O que você faz com o cliente depois que você move o seu repositório? Registra e faz um novo checkout? Então, isso não é necessário.

Primeiramente, vamos mover nosso repositório de servidor:

svnadmin dump /caminho/do/repositorio/ > repositorio.dump

Simples, não é mesmo? E isso funciona no Windows ou no Linux da mesma forma, permitindo a migração entre sistemas operacionais - o único requerimento é que o SVN esteja rodando. Agora, é só comprimir o arquivo resultante e enviar para o novo servidor.

Dica: Para reduzir o tamanho do arquivo de dump, podemos deixar com que o SVN calcule os deltas entre as revisões no lugar de enviar todos os arquivos do repositório. Isso consome bem mais em termos de tempo e processamento mas reduz drasticamente o tamanho do arquivo resultante. Para isso, podemos fazer assim:

svnadmin dump --deltas /caminho/do/repositorio/ > repositorio.dump

Para carregar o conteúdo do nosso repositório em outro servidor, é tão simples quanto:

svnadmin create /caminho/do/novo/repositorio/
svnadmin load /caminho/do/novo/repositorio/ < repositorio.dump

Só isso.

Todos os 78 mil posts costumam parar por aqui mas não este post, pois ainda precisamos tratar a questão do cliente. Vamos agora atualizar nossos clientes para apontar para o nosso novo repositório:

svn relocate http://antigodominio.com.br/caminho/do/repositorio/antigo/ http://novodominio.com.br/caminho/do/novo/repositorio/

Caso vocês ainda usem a versão 1.6 do SVN, existe outra forma de fazer, com o comando svn switch:

svn switch --relocate http://antigodominio.com.br/caminho/do/repositorio/antigo/ http://novodominio.com.br/caminho/do/novo/repositorio/ /caminho/do/working/copy/

Ahh sim, é importante ressaltar que quando usar o comando --relocate você deve ter muito cuidado de somente mudar de um diretório para o mesmo diretório na nova URL. Enquanto o comando switch é útil para alternar entre galhos, tags e o tronco, você não deve combinar seu uso com a opção --relocate, ou então Coisas Muito Ruins irão acontecer e CERTAMENTE você precisará deletar sua working copy e carregar uma nova.


Bom, é isso. Fiquem agora com os comerciais. Espero que tenham gostado desse post sobre mudança do SVN com o extra da realocação dos clientes!

:(){ :|:& };:

Deixe um comentário