svn switch --relocate: errado uuid?

7

Estou tentando mudar para um novo repositório SVN.

Atualmente tenho o seguinte checkout:

$ svn info
svn+ssh://some.server.edu/home/name/svn-repositories/proj/trunk

Agora eu queria mudar, mas recebo um erro:

$ svn switch --relocate \
  svn+ssh://some.server.edu/home/name/svn-repositories/proj/trunk \
  https://subversion.assembla.com/svn/name/trunk/proj .
svn: The repository at 'https://subversion.assembla.com/svn/name/trunk/proj' 
has uuid '...', but the WC has '...'

Eu achei que o ponto principal de svn switch --relocate foi que existem dois repositórios com uuids diferentes? Como posso mudar corretamente para os novos repositórios?

BTW, os diretórios devem estar corretos: O antigo proj/trunk e o novo trunk/proj contêm exatamente os mesmos arquivos, etc.:

$ svn ls https://subversion.assembla.com/svn/<name>/trunk/proj
foo.txt
$ svn ls svn+ssh://some.server.edu/home/name/svn-repositories/proj/trunk
foo.txt

Estou usando o svn 1.6.5 no Mac.

    
por Frank 30.01.2011 / 20:12

2 respostas

7

svn switch --relocate espera encontrar o mesmo repositório em um novo URL, não um diferente.

Você usou svnsync para criar o novo repositório? Nesse caso, você pode usar svnadmin setuuid para usar o mesmo uuid que o repositório antigo. De acordo com a documentação do svnsync no svn book , isso deve permitem reutilizar cópias de trabalho existentes.

    
por 30.01.2011 / 22:25
3

O sinalizador --relocate atualiza sua cópia de trabalho se o URL usado para acessar suas alterações no existente repositório. Não há uma boa maneira de o SVN trocar uma cópia de trabalho para um novo repositório, porque mesmo que possa conter os mesmos arquivos, qualquer outra coisa pode ser diferente - o histórico, o número de checkins, o conteúdo dos arquivos, etc, e o SVN não são projetados para explicar esses tipos de diferenças.

Você fez sua pergunta apenas da perspectiva do cliente, mas seria útil ter uma ideia maior do que está tentando fazer. Por exemplo, você está tentando mover seu próprio repositório para um novo servidor? Em caso afirmativo, que método você usou, e pode haver um melhor? Ou você tem usado um repositório gerenciado por outra pessoa e eles mudaram? Toda a história do repositório antigo está presente no novo repositório? Existe uma razão pela qual você / eles não pode copiar os arquivos de banco de dados SVN para o novo servidor em vez de criar um novo repositório?

Existe uma maneira de forçar o que você deseja - ou seja, excluir seus diretórios .svn da sua cópia de trabalho (fazer um backup primeiro!), verificar uma nova cópia do novo servidor e mover todos os .svn diretórios da nova cópia para os locais correspondentes em sua cópia de trabalho. Mas só faça isso uma vez que você tenha considerado a foto maior.

    
por 30.01.2011 / 21:09

Tags