Como reparar um repositório danificado (que possui um diretório .svn centralizado)?

19

Atualizei recentemente minha instalação do TortoiseSVN para a versão 1.7.1. Isso me forçou a atualizar minha cópia de trabalho também. A atualização removeu todos (exceto um) dos diretórios .svn de todos os subdiretórios, deixando apenas um na raiz.

Agora do nada (é claro; suspeito que meu software antivírus) ocorre um erro quando, por exemplo, tento limpar a cópia de trabalho. Também não sou capaz de cometer nada.

A mensagem de erro ao limpar é:

A limpeza falhou ao processar os seguintes caminhos: C: \ svn

Não é possível abrir o arquivo 'C: \ svn.svn \ pristine \ 73 \ 73bcc5fa7819f84f56b81dfa0236f0aac7b7d404.svn-base': o sistema não pode encontrar o arquivo especificado.

Rastreei o erro relacionado à presença de um diretório na cópia de trabalho. Se eu renomeá-lo, tudo funcionará. Quando está presente, recebo o erro. Também o apaguei e verifiquei novamente. Sem alterações, o erro persiste.

Nas versões anteriores, eu poderia reparar os danos no .svn facilmente: basta excluir a pasta incorreta e verificar novamente. Não posso mais fazer isso porque agora o dir .svn está centralizado.

O que posso fazer para reparar minha cópia de trabalho?

Heinrich Ulbricht
fonte

Respostas:

21

Não é possível abrir o arquivo 'C: \ svn.svn \ pristine \ 73 \ 73bcc5fa7819f84f56b81dfa0236f0aac7b7d404.svn-base

Acabei de ter um erro semelhante e, na verdade, tive que criar esse arquivo com o bloco de notas e depois a limpeza funcionou.

Dave Storm
fonte
1
Mas isso é seguro? A "svn cleanup" tornará esse arquivo não vazio novamente? (Porque certamente foi antes, não?)
hans_meine
Posso verificar que este método funciona, eu não tenho certeza qual é o resultado / perda de criar um arquivo tal vazio - mas não criá-lo, não me permitem "prosseguir com a cometer"
nrathaus
4

Em vez de criar um arquivo vazio (que não me atrevia a fazer), fiz uma nova verificação temporária apenas do diretório afetado (especificando a mesma revisão) e copiei o arquivo ausente da nova subpasta .svn para a pasta quebrada do diretório ativo .

Para ilustrar melhor isso, no meu caso, o arquivo que o svn reclamava era .svn/pristine/d1/d12a84ef7be5dad86b76e1a45fc3da4698d38796.svn-base , que é exatamente o caminho a ser encontrado no checkout novo e parcial.

hans_meine
fonte
3

Tivemos o mesmo problema após a atualização da versão mais antiga para o Tortoise SVN 1.7.7.

Como não encontrei outra solução, excluí a cópia de trabalho local e a verifiquei novamente. Está funcionando bem agora.

Tomas Chlouba
fonte
2

Eu entendi o problema enquanto abortava uma fusão. Não consegui executar nenhuma ação SVN. Ao fazer uma limpeza de SVN, ocorreu um erro ao não encontrar um arquivo especificado que levasse à falha na limpeza.

Criei um arquivo fictício com esse nome exato na pasta especificada e fiz uma limpeza de SVN.

Então eu fui capaz de prosseguir.

user304100
fonte
0

Eu tive um problema semelhante, onde estava dizendo que um arquivo C:\working_copy\dir\file.xmlnão pôde ser encontrado. Eu havia excluído o dirdiretório. No meu caso, simplesmente adicionar uma nova dirpasta e file.xmlarquivo (com texto vazio) permitiu que a limpeza continuasse, para que eu pudesse atualizar corretamente a cópia de trabalho.

jevon
fonte
0

Meu problema era que precisaria reconfigurar todos os projetos no meu IDE se eu fizesse check-out do repositório do zero, não me importando em salvar as alterações.

Eu removi o diretório .svn e o repositório de checkout no mesmo diretório.

Problema resolvido: eu era capaz de executar todas as operações svn e o projeto ainda estava configurado no IDE

Shapoval Sergio
fonte