it-swarm-eu.dev

Jak lze opravit SVN 'Pracovní kopie textové báze je poškozen'?

Poté, co se mnoho šťastných dopustí mého svn repo, najednou se vztah stal kyselým ... svn překlopil víko a zakřičel: " Pracovní kopie textové základny je poškozena! "

Co to mohlo způsobit? Jak to mohu opravit?

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

To byla chyba.

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

VYMAZAT ŘEŠENÍ, KTERÉ MALI JSOU SMOOTHLY:

POZOR: _ ​​Zkopírujte soubor do jiného souboru mimo prostředí SVN.

cp exampleFileCorrupted.cpp ~/Desktop/

pak postupujte následovně:

  1. cd na cestu, ve které máte poškozený soubor (což je ten, který je označen za: Kontrolní součet nesouladu pro textovou základnu)
  2. svn rm --force exampleFileCorrupted.cpp

    Uvidíte: D exampleFileCorrupted.cpp

  3. Zkopírujte soubor, který jste uložili před bodem 1 ve složce SVN, ve které se nacházíte s:

    cp ~/Desktop/exampleFileCorrupted.cpp .

(Nenechte si ujít bod na konci, který znamená 'kopírovat zde')

  1. Přidat do svn s: svn add exampleFileCorrupted.cpp

    Uvidíte: A exampleFileCorrupted.cpp

  2. Potvrdit změny: svn commit -m "Commit Message"

Dejte mi vědět, jestli to pomohlo. 

34
  1. Zkopírovat problémový soubor na jiné místo,
  2. Smazat a potvrdit soubor v úložišti, 
  3. Zkopírujte soubor do SVN a commit
15
ryrysz

To funguje pro mě:

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

Pozdravy,

15
geckos

Udělejte si samostatnou novou pokladnu a zkopírujte změny, které jste provedli v této staré pracovní kopii, do nové. 

14
khmarbaise

U novějších verzí Subversion neexistuje žádný adresář .svn/text-base/. Soubor .svn je uložen v kořenovém adresáři .svn/pristine a chybová zpráva vypadá takto:

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

Můžete to opravit pomocí skriptu bash na adrese https://Gist.github.com/siddhadev/5814802 .

7
siddhadev

@siddhadev skript by měl fungovat, ale pro ty, kteří dávají přednost ručnímu:

  1. Exportovat poslední revizi problémového souboru jako lastworkingrev.txt
  2. Získat kontrolní součet sha1 pomocí sha1sum lastworkingrev.txt
  3. Vyhledejte původní soubor Subversion s find . -name "SHA1_CHECKSUM.svn-base" a přepište jej obsahem lastworkingrev.txt
  4. Spáchat
3
Julian Go

Měl jsem stejný problém, ale žádná z předchozích odpovědí nepomohla. V mém případě bylo úložiště Subversion ve verzi 1.6, ale ve verzi 1.7 jsem povolil IntelliJ. Neexistovala žádná indikace neshod verze než chyba "svn: E200014: Base kontrolní součet chyb". Jednoduše odškrtnout nový strom se správnou verzí problém vyřešil.

2
Gary Rush

Měl tento problém po filtrování výpisu s https://github.com/jasperlee108/svndumpfilterIN

Opraveno odstraněním kontrolních součtů md5 ...

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

Mohou však existovat nějaké důsledky ...

0
Jehy

Snažil jsem se všechno výše, vyčištění nefunguje. SVN mě doporučil k odběru nové kopie. Ale projekt je příliš velký a změnil jsem příliš mnoho kódů, porovnání bude stát hodně času. Zde je způsob, jak jsem problém vyřešil s každou změnou. 

  1. Odstraňte všechny složky.svn. Tato složka může existovat jeden nebo mnoho závisí na verzi SVN. Stačí najít každý jeden a odstranit. 
  2. Poklepejte na pracovní složku. To bude upozorňovat "není prázdná složka", klepněte na tlačítko "ano". Poté se pracovní kopie obnoví.
0
Linda Zeng

Naučil jsem se nedůvěřovat, že mám pracovní adresář pod kontrolou verzí. Když jsem připraven se dopustit, udělám rekurzivní rozdíl a zkopíruji změny do adresáře s odhlášením. Tímto způsobem, pokud se SVN tlumí, vše, co dělám, je rm -Rf checkout a proveďte nový checkout, pak opakujte příkazy pro kopírování.

Nepřišel jsem hledat řešení. Přišel jsem hledat důvod pro toto chmurné chování a nic jsem nenašel. Stává se to i tehdy, když jsem jediná osoba, která používá větev a dělá vše z příkazového řádku, kterému věřím víc než Eclipse nebo jakékoliv jiné rozhraní.

0
Jerry Miller

Smazat Stávající kopii a vzít novou kontrolu váš problém bude vyřešen. 

0
Anand Dwivedi

Proveďte čištění týmu SVN-> Vyčištění.

0
Jeevitesh Singh