SVN - Mancata corrispondenza del checksum durante l'aggiornamento


122

Quando provo ad aggiornare alcuni file da Subversion, ottengo l'errore:

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

Perché ottengo questo? Come posso ripararlo?

Risposte:


70

Il modo più semplice per risolverlo (se non si hanno molte modifiche) è copiare le modifiche in un'altra directory, eliminare la directory in cui è stato estratto il progetto ed eseguire nuovamente il checkout del progetto.

Quindi copia nuovamente le modifiche in (non copiare alcuna cartella .svn), esegui il commit e continua.


9
Ho appena cancellato la cartella in cui si trovava un file problematico e ho aggiornato l'intero progetto. Ora sembra essere ok.
Koralek M.

+1 L'altra alternativa che ho trovato mi ha lasciato ad hackerare il database svn, molto più semplice
SeanDowney,

@ SeanDowney come farlo?
arvindwill

@arvindwill Scusa, non sono stato molto chiaro nel mio commento, questo metodo è molto più semplice. Ecco l'alternativa spaventosa: maymay.net/blog/2008/06/17/…
SeanDowney

2
Questa non è affatto una correzione specifica. Puoi sempre eliminare tutti i tuoi dati locali e iniziare con una nuova copia dal repository.
tim

197

Nel caso in cui si utilizza SVN 1.7+ c'è una soluzione descritta qui .

Solo per ricapitolare:

  1. Vai alla cartella con il file che causa problemi
  2. Esegui il comando svn update --set-depth empty (nota: questo cancellerà i tuoi file, quindi fai prima una copia!)
  3. Esegui il comando svn update --set-depth infinity

17
Anche se questo ha funzionato per me, nota che "svn update --set-depth empty" cancellerà tutto da quel percorso, quindi fai prima una copia
tristanbailey

3
Ha funzionato alla grande per riparare un repository gigante in una posizione remota. Anche se un nuovo checkout avrebbe funzionato, ci sarebbe voluta più di un'ora; ci vollero pochi minuti.
Brian Gillespie

ciao ho usando window e tortoisesvn come client svn .. Stavo provando la tua soluzione .ma mostra ancora l'ISSE
Amit Bera

Ho appena sostituito la directory .svn dal nuovo repository al vecchio, ha funzionato :)
harishkumar329

Ha funzionato benissimo per me, grazie! Vale la pena notare che il punto n. 1 è eseguire il drill-down della cartella (o del file) effettivo che causa il problema. Quindi non devi aggiornare molto. Avevo una cartella con alcune dozzine di file in essa che ho usato Tortoise "Aggiorna a-> solo questo elemento" sulla cartella e poi "Aggiorna a-> completamente ricorsivo" per riaverlo tutto. State comunque tutti attenti che questo cancella i file in quella cartella! Su un collegamento VPN lento con un repository da molti gigabyte e con profondità di impostazione ottimizzate, la soluzione "standard" era semplicemente inutile.
dash-tom-bang

6

Ho avuto un problema simile. Il provider principale era l'antivirus "FortiClient" (antivirus + VPN CLient). Quando l'ho disabilitato, tutti gli aggiornamenti / checkout sono stati effettuati correttamente


1
Questa è l'unica risposta che ha risolto il mio problema. Non ci avrei mai pensato. Grazie!
timeon

5

Ho trovato un modo più semplice per risolvere questo problema. Non puoi farlo direttamente da Eclipse. passi:

  1. Passa alla struttura delle cartelle dell'area di lavoro in Windows
  2. rinomina la cartella
  3. aggiorna in eclissi
  4. Ora la cartella ei file verranno rimossi dal progetto in eclipse e appariranno sotto una nuova cartella rinominata
  5. Ora prova l'opzione "Sincronizza con Respository".

Ciò ripristinerà la cartella di base del testo in .svnfolder. La mancata corrispondenza del checksum durante l'aggiornamento l'errore non verrà più visualizzato.


1

Questo è successo a me utilizzando il plug-in Eclipse e la sincronizzazione. Il file che causa il problema non ha avuto modifiche locali (e in effetti nessuna modifica remota dal mio ultimo aggiornamento). Ho scelto "ripristina" per il file, senza altre modifiche ai file, e le cose sono tornate alla normalità.


1

Ho avuto lo stesso errore ma per un file. In IntelliJ IDEA sono stato in grado di fare una copia del file, quindi andare nel progetto ed eliminare il file in questione, quindi eseguire correttamente il commit. Quindi, ho creato un nuovo file con lo stesso nome e copiato nuovamente il contenuto al suo interno. Immagino che perderai la cronologia delle revisioni ma funziona.


1

Se hai un collega che lavora con te:

1) chiedigli di rinominare il file che causa problemi e commit

2) tu update (ora vedi il file con checksum non valido con nome diverso)

3) rinominalo al suo nome originale

4) commit(e chiedi al tuo collega diupdate recuperare il nome del file nel suo stato iniziale)

Questo ha risolto il problema per me.



1

Sto usando Tortoise SVN, dopo aver provato tutte le soluzioni in questa pagina e non funziona,

Finalmente eseguo il backup del file problematico. e usa Repo Browserelimina il file problematico al suo interno, quindi aggiorna la cartella locale in modo che il file nella cartella locale venga eliminato. Quindi copia nuovamente il file di backup eAdd > Commit , quindi, posso aggiornare correttamente.

L'unico svantaggio di questo metodo è che la cronologia di questo file verrà rimossa.


0

Per risolvere questo problema, segui i passaggi seguenti:

  1. Apri il file delle voci che si trova nella directory .svn in cui ricevi l'errore.
  2. Trova la voce per il file che dà l'errore e sostituisci il valore previsto con il valore effettivo in errore.
  3. Ora sincronizza e prova ad aggiornare.

Se ancora non funziona. Prova questi. È solo una soluzione alternativa:

  1. Elimina il file dal tuo sistema.
  2. Elimina la voce del file dal file delle voci. (A partire dal nome del file fino ai caratteri speciali).
  3. Ora sincronizza e aggiorna il file.

Questo otterrà l'ultima versione del file dal repository e tutti i conflitti verranno risolti.


0

ha avuto un problema simile su un server, ma la directory SVN era molto grande, non volevo eliminare e risincronizzare, quindi ho solo fatto una copia dei file localmente e poi li ho cancellati. Quando l'aggiornamento è riuscito e sono stati aggiunti di nuovo i file.


0

provare a eliminare il file e rimuovere il riferimento al file dalle voci del file nella directory .svn


0

Ho avuto un errore simile e ho risolto come segue:

(La mia 'correzione' si basa su un presupposto che può o non può essere corretto in quanto non so molto su come funziona la sovversione internamente, ma sicuramente ha funzionato per me)

Suppongo che .svn \ text-base \ import.php.svn-base corrisponda all'ultimo commit.

Quando ho controllato il file su cui stavo riscontrando l'errore, il file di base NON corrispondeva all'ultimo commit nel repository.

Ho copiato il testo dall'ultimo commit e l'ho salvato nella cartella .svn, sostituendo il file errato (ho fatto una copia di backup nel caso le mie ipotesi fossero sbagliate). (il file era contrassegnato in sola lettura, ho cancellato il flag, sovrascritto e impostato di nuovo in sola lettura)

Sono stato quindi in grado di impegnarmi con successo.


0

La mia soluzione era:

  1. Esegui la pulizia svn dal file system
  2. Passa a un altro ramo
  3. Risolvi i conflitti
  4. Passa al ramo "problematico"
  5. Eseguire la pulizia da Spring Tool Suite
  6. Eseguire l'aggiornamento del progetto

0

1.'update to reversion 'controlla' solo questo elemento 'nella directory 2.update di nuovo seleziona' Fully recursive '

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.