Mover Ficheiros De Um Repositório Para Outro com Subversion.

2010-06-30

Ontem, num curta sessão de manutenção dos meus repositórios de Subversion, senti necessidade de reorganizar algumas, como creio ser “normal” ao fim de algum tempo. Tendo a organizar o meu SVN como múltiplos repositórios, um por projecto. Dentro de cada repositório tenho os diversos projectos de classes, sites ou aplicações associados. Tenho assim vários repositórios contextualizados e mais pequenos, em vez de um repositório geral com diversos projectos. A única dificuldade que apresenta é o backup / dump que obriga a manter um script com a lista de comandos de “svnadmin dump” para cada repositorio individual.

Também, apenas agora começo a usar a estrutura de pastas típicas do SVN – /trunk, /brenches e /tags, porque só agora tive necessidade de usar tags para marcar algumas situações. Mover as pastas dentre do repositório para incluir esta alteração é bastante simples, e com o ToirtoiseSVN no server, é drag n’ drop.

Durante a reorganização, senti necessidade de mover alguns repositórios – essencialmente de projectos de testes – e uni-los num só repositório contextualizado. Mover pastas dentro de um repositório é muito simples, usando o commando svn move ou usando o RepoBrowser do ToirtoiseSVN Repo Browser. Mas entre repositórios é um pouco mais elaborado. é preciso efectuar o dump do repositórios, e recarrega-lo no novo repositório, preferencialmente indicando a nova pasta para a qual deve ser carregada. A vantagem é que o histórico de alterações é conservada (sofre apenas uma renumeração).

Para fazer o dump, o comando é:

Para carregar o dump criado:

De notar a opção –parent-dir onde indico a pasta do repositório para onde os ficheiros devem ser carregados. É necessário criar a pasta no repositório de destino antes de efectuar o load. Caso contrário é levantado um erro e os dump não é carregado. Uma forma mais simpels de o escrever (e sem criar o ficheiro dump) é: