web-dev-qa-db-fra.com

Comment corriger SVN 'La base de texte de la copie de travail est corrompue'?

Après de nombreuses commissions heureuses sur mon svn repo, la relation a soudainement mal tourné ... svn a renversé le couvercle et a crié: " La base du texte de la copie de travail est corrompue! "

Qu'est-ce qui aurait pu causer ça? Comment je le répare?

Working copy text base is corrupt
svn: Commit failed (details follow):
svn: Checksum mismatch for '~/blah/.svn/text-  base/sumonet.py.svn-base'; expected: '548b9bb4b24bc580ab8694c583b28013', actual: '8b2b3cf4615de3d8520ae4841b3b0a8b'
30
Niel de Wet

C'était l'erreur.

svn: E155017: Working copy text base is corrupt
svn: E200014: Checksum mismatch for text base of : '/home/.../exampleFileCorrupted.cpp'
....

SOLUTION CLAIRE QUI A TRAVAILLÉ POUR MOI LISSE:

ATTENTION: Copiez votre fichier dans un autre fichier en dehors de l'environnement SVN.

cp exampleFileCorrupted.cpp ~/Desktop/

puis suivez ci-dessous:

  1. cd vers le chemin dans lequel vous avez le fichier corrompu (qui est celui indiqué après: Incompatibilité de somme pour la base de texte de)
  2. svn rm --force exampleFileCorrupted.cpp

    Vous verrez: D exampleFileCorrupted.cpp

  3. Copiez le fichier que vous avez sauvegardé avant le point 1 dans le dossier SVN dans lequel vous vous trouvez avec:

    cp ~/Desktop/exampleFileCorrupted.cpp .

(Ne manquez pas le point à la fin qui signifie «copier ici»)

  1. Ajouter à svn with: svn add exampleFileCorrupted.cpp

    Vous verrez: A exampleFileCorrupted.cpp

  2. Valider les modifications : svn commit -m "Commit Message"

Faites-moi savoir si cela a aidé. 

34
  1. Copier le fichier problématique à un autre endroit,
  2. Supprimer et valider le fichier dans le référentiel, 
  3. Copiez votre fichier dans SVN et validez
15
ryrysz

Cela fonctionne pour moi:

svn rm --keep-local THE_CORRUPTED_FILE
svn add THE_CORRUPTED_FILE
svn ci

Cordialement,

15
geckos

Faites simplement une nouvelle commande distincte et copiez les modifications que vous avez apportées dans cette ancienne copie de travail dans la nouvelle. 

14
khmarbaise

Avec les nouvelles versions de Subversion, il n'y a pas de répertoire .svn/text-base/. Le .svn est stocké à la racine de travail sous .svn/pristine et le message d'erreur ressemble à ceci:

Sending        README
Transmitting file data .svn: E155017: Commit failed (details follow):
svn: E155017: Working copy text base is corrupt
svn: E200014: Checksum mismatch for text base of '/home/user/tmp/svntest/README':
   expected:  1f9167bc01e5bc9bfcb928ff03d6700a
     actual:  e0a1692ff5cab91e3e3a0d02dabe0251

svn: E200003: Delta source ended unexpectedly

Vous pouvez le réparer en utilisant le script bash à l'adresse https://Gist.github.com/siddhadev/5814802 . Il remplacera le fichier svn-base corrompu par un nouveau.

7
siddhadev

Le script @siddhadev devrait fonctionner, mais pour ceux qui préfèrent le faire manuellement:

  1. Exporter la dernière révision du fichier problématique sous la forme lastworkingrev.txt
  2. Obtenez sa somme de contrôle sha1 avec sha1sum lastworkingrev.txt
  3. Recherchez le fichier vierge Subversion avec find . -name "SHA1_CHECKSUM.svn-base" et écrasez-le avec le contenu de lastworkingrev.txt
  4. Commettre
3
Julian Go

J'ai eu le même problème, mais aucune des réponses précédentes n'a aidé. Dans mon cas, le référentiel Subversion était à la version 1.6, mais j’avais permis à IntelliJ de passer à la version 1.7. Il n'y avait aucune indication d'incompatibilité de version autre que l'erreur "svn: E200014: Incompatibilité de la somme de contrôle de base". Simplement extraire un nouvel arbre avec la version correcte corrige le problème.

2
Gary Rush

Avait ce problème après avoir filtré mon dump avec https://github.com/jasperlee108/svndumpfilterIN

Correction avec la suppression des sommes de contrôle md5 ...

sed -i '/Text-copy-source-md5/d' eias_only.dmp

Cependant, il peut y avoir des conséquences ...

0
Jehy

J'ai tout essayé ci-dessus, le nettoyage ne fonctionne pas. SVN me recommande de commander une nouvelle copie. Mais le projet est trop volumineux, et j’ai modifié trop de codes, la comparaison coûtera beaucoup de temps… C'est la façon dont j'ai résolu le problème à chaque changement conservé. 

  1. Supprimez tous les dossiers.svn. Ce dossier peut exister un ou plusieurs dépend de la version de SVN. Trouvez-les tous et supprimez-les. 
  2. Commander le dossier de travail. Il va alerter "pas un dossier vide", cliquez sur "oui". Ensuite, la copie de travail est récupérée.
0
Linda Zeng

J'ai appris à ne pas faire confiance à mon répertoire de travail sous contrôle de version. Lorsque je suis prêt à valider, je fais un diff récursif et copie les modifications dans le répertoire extrait. De cette façon, si SVN s'étouffe, tout ce que je fais est rm -Rf la sortie et effectuez une nouvelle commande, puis répétez les commandes de copie.

Je ne suis pas venu ici pour chercher une solution. Je suis venu chercher une raison pour ce comportement floconneux et je n'ai rien trouvé. Cela se produit même lorsque je suis la seule personne à utiliser la branche et à tout faire depuis la ligne de commande, ce en quoi je fais davantage confiance qu'Eclipse ou toute autre interface.

0
Jerry Miller

Supprimer la copie existante et reprendre le contrôle, votre problème sera résolu. 

0
Anand Dwivedi

Faites une équipe de nettoyage SVN-> Nettoyage.

0
Jeevitesh Singh