SVN - Incompatibilidade de soma de verificação durante a atualização

122

Quando tento atualizar alguns arquivos do Subversion, recebo o erro:

org.tigris.subversion.javahl.ClientException: 
Checksum mismatch while updating 'D:\WWW\Project\\.svn\text-base\import.php.svn-base'; expected: '3f9fd4dd7d1a0304d8020f73300a3e07', actual: 'cd669dce5300d7035eccb543461a961e'

Por que eu recebo isso? Como posso corrigir isso?

Koralek M.
fonte

Respostas:

70

A maneira mais fácil de corrigi-lo (se você não tiver muitas alterações) é copiar as alterações em outro diretório, excluir o diretório em que o projeto foi retirado e fazer check-out novamente.

Em seguida, copie as alterações novamente (não copie nenhuma pasta .svn), confirme e continue.

sjakubowski
fonte
9
Acabei de excluir a pasta onde estava um arquivo com problema e atualizei todo o projeto. Agora parece estar bem.
precisa saber é o seguinte
+1 O outro I alternativa encontrada me deixou cortar o banco de dados svn, muito mais fácil
SeanDowney
@SeanDowney como fazer isso?
Arvindwill
@arvindwill Desculpe, eu não fui muito claro no meu comentário, esse método é muito mais fácil. Aqui é a alternativa assustador: maymay.net/blog/2008/06/17/...
SeanDowney
2
Esta não é uma correção específica. Você sempre pode excluir todos os seus dados locais e começar com uma nova cópia do repositório.
tim
197

Caso você esteja usando o SVN 1.7+, há uma solução alternativa descrita aqui .

Apenas para recapitular:

  1. Vá para a pasta com o arquivo que está causando problemas
  2. Executar comando svn update --set-depth empty(nota: isso excluirá seus arquivos, faça uma cópia primeiro!)
  3. Executar comando svn update --set-depth infinity
jrd
fonte
17
Enquanto isso funcionou para mim, nota "svn update --set profundidade esvaziar" vai apagar tudo, desde esse caminho, então faça uma cópia primeiro
tristanbailey
3
Isso funcionou muito bem para consertar um repositório gigante em um local remoto. Enquanto um novo check-out teria funcionado, levaria mais de uma hora; isso levou minutos.
Brian Gillespie
oi eu ter usando a janela e tortoisesvn como cliente svn .. Eu era tentar a sua solução .mas ainda mostrar a isse
Amit Bera
Apenas substituído diretório .svn de novo repositório para o velho, que funcionou :)
harishkumar329
Isso funcionou muito bem para mim, obrigado! Vale a pena notar que o ponto 1 é detalhar a pasta (ou arquivo) real que está causando o problema. Então você não precisa atualizar muito. Eu tinha uma pasta com algumas dezenas de arquivos e usei o Tortoise "Atualizar para-> apenas este item" na pasta e, em seguida, "Atualizar para-> totalmente recursiva" para recuperar tudo. Ainda todo mundo, cuidado com o fato de que isso exclui os arquivos dessa pasta! Em um link VPN lento, com um repo de muitos gigabytes e profundidade de conjunto bem ajustada, a solução "padrão" era simplesmente inútil.
traço-tom-bang
6

Eu tive um problema semelhante. O principal provedor foi o antivírus "FortiClient" (antivírus + VPN CLient). Quando o desativei - todas as atualizações / check-out foram feitas corretamente

pawicek
fonte
1
Esta é a única resposta que resolveu meu problema. Eu nunca pensei nisso. Obrigado!
timeon
5

Encontrei uma maneira mais fácil de corrigir esse problema. Você não pode fazer isso diretamente do eclipse. Passos:

  1. Navegue para a estrutura de pastas da área de trabalho no Windows
  2. renomeie a pasta
  3. atualizar no eclipse
  4. Agora a pasta e os arquivos serão removidos do projeto no eclipse e aparecerão na nova pasta renomeada
  5. Agora tente a opção "Sincronizar com o repositório".

Isso restaurará a pasta base de texto na pasta .svn. A incompatibilidade de soma de verificação durante a atualização do erro não aparecerá mais.

Divya
fonte
1

Isso aconteceu comigo usando o plug-in Eclipse e sincronizando. O arquivo que causou o problema não teve alterações locais (e, de fato, nenhuma alteração remota desde a minha última atualização). Eu escolhi "reverter" para o arquivo, sem outras modificações nos arquivos, e as coisas voltaram ao normal.

Jason Merecki
fonte
1

Eu tive o mesmo erro, mas para um arquivo. No IntelliJ IDEA, pude fazer uma cópia do arquivo, depois entrar no projeto, excluir o arquivo em questão e confirmar com êxito. Então, criei um novo arquivo com o mesmo nome e copiei o conteúdo novamente. Eu acho que você perderia o histórico de revisões, mas funciona.

codeanimalsAsGuest
fonte
1

Se você tem um colega trabalhando com você:

1) peça para ele renomear o arquivo causando problemas e commit

2) você update(agora você vê o arquivo com soma de verificação inválida com nome diferente)

3) renomeie-o de volta ao seu nome original

4) commit(e peça ao seu colega para updaterecuperar o nome do arquivo em seu estado inicial)

Isso resolveu o problema para mim.

Petko Kostov
fonte
1

Estou usando o Tortoise SVN, depois de tentar todas as soluções nesta página e não funcionar,

Finalmente faço o backup do arquivo do problema. e use Repo Browserexcluir o arquivo com problema e atualize a pasta local para que o arquivo na pasta local seja excluído. Em seguida, copie o arquivo de backup para que Add > Commiteu possa atualizar com êxito.

A única desvantagem desse método é que o histórico desse arquivo será removido.

yu yang Jian
fonte
0

Para resolver isso, siga as seguintes etapas:

  1. Abra o arquivo de entradas localizado no diretório .svn em que você está recebendo o erro.
  2. Localize a entrada para o arquivo que deu erro e substitua o valor esperado pelo valor real com erro.
  3. Agora sincronize e tente atualizar.

Se ainda não funcionar. Tente esse. É apenas uma solução alternativa:

  1. Exclua o arquivo do seu sistema.
  2. Exclua a entrada do arquivo do arquivo de entradas. (A partir do nome do arquivo até os caracteres especiais).
  3. Agora sincronize e atualize o arquivo.

Isso obterá a versão mais recente do arquivo do repositório e todos os conflitos serão resolvidos.

DeepInJava
fonte
0

tinha um problema semelhante em um servidor, mas o diretório SVN era muito grande, não queria excluir e ressincronizar, então apenas fiz uma cópia dos arquivos localmente e os excluí. Quando a atualização foi bem-sucedida e os arquivos foram adicionados novamente.

rocketdoctor
fonte
0

tente excluir o arquivo e remover a referência de arquivo das entradas de arquivo no diretório .svn

mocia
fonte
0

Eu tive um erro semelhante e corrigi da seguinte maneira:

(Minha 'correção' é baseada em uma suposição que pode ou não estar correta, pois eu não sei muito sobre como o subversion funciona internamente, mas definitivamente funcionou para mim)

Estou assumindo que .svn \ text-base \ import.php.svn-base deve corresponder à confirmação mais recente.

Quando verifiquei o arquivo em que estava ocorrendo o erro, o arquivo base NÃO correspondia à confirmação mais recente no repositório.

Copiei o texto da confirmação mais recente e salvei na pasta .svn, substituindo o arquivo incorreto (fiz uma cópia de backup caso minhas suposições estivessem erradas). (o arquivo foi marcado como somente leitura, limpei essa sinalização, substituí-a e configurei-a novamente como somente leitura)

Eu fui capaz de confirmar com sucesso.

Mendel
fonte
0

Minha solução foi:

  1. Executar limpeza svn do sistema de arquivos
  2. Mudar para outro ramo
  3. Resolver conflitos
  4. Mudar para o ramo "problemático"
  5. Executar limpeza do Spring Tool Suite
  6. Executar atualização do projeto
Alessandro C
fonte
0

1.'atualizar para reversão 'marque' apenas este item 'no diretório 2.update novamente marque' Totalmente recursivo '

sete libras
fonte