Recuperando-se de um backup de repositório Subversion um pouco desatualizado
-
09-06-2019 - |
Pergunta
Um problema que encontrei há algum tempo e nunca encontrei uma boa solução para ...
Digamos que você tenha feito check-out de uma cópia de trabalho do Subversion na revisão 7500 e o disco que contém o repositório atual morre.Você tem um backup do repositório, digamos, na revisão 7450.É fácil restaurar o backup do repositório, mas qualquer tentativa de usar a cópia de trabalho nele gera um erro dizendo que a revisão 7500 não existe no repositório.
Qual é a melhor maneira de verificar uma revisão gigantesca para trazer o conteúdo do repositório para corresponder ao conteúdo da cópia de trabalho e fazer com que a cópia de trabalho volte a um estado funcional?
(Idealmente, eu gostaria de algo mais fácil do que ter que verificar uma nova cópia de trabalho e depois copiar todos os arquivos manualmente - acho que na época as cópias de trabalho eram usadas para gerenciar a configuração de servidores, então foi uma verdadeira dor de cabeça ter para verificar cópias de trabalho limpas)
Solução
Você pode verificar uma cópia rev.7450 em algum lugar e exportar sua cópia 7500 (para remover as pastas .svn).Arraste a cópia exportada (que é a cópia mais recente) sobre a cópia 7450.Todos os novos arquivos devem simplesmente substituir os mais antigos, deixando as pastas .svn iguais.
O Subversion assumirá que você acabou de fazer algumas alterações em 7450, e o próximo check-in irá defini-lo como 7451.
Outras dicas
Faça um novo checkout em uma pasta diferente e use um programa diff para criar um patch.aplique o patch à sua nova cópia de trabalho.
Se você tiver certeza de que possui a versão mais recente em seu diretório, faça o seguinte:
- Exclua o item do repositório
- Exclua as referências SVN da sua cópia
- Faça check-in do seu código como uma nova cópia.
- Confira o código que você acabou de fazer check-in
Você pode preencher os números de revisão ausentes carregando um arquivo de despejo com várias revisões vazias.Há respostas discutindo como fazer isso em Como posso alterar o número de revisão de um repositório.Carregue todas as revisões, exceto uma, desta forma, então você pode simplesmente verificar todas as suas alterações em uma última revisão gigante.