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'
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ě:
svn rm --force exampleFileCorrupted.cpp
Uvidíte: D exampleFileCorrupted.cpp
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')
Přidat do svn s: svn add exampleFileCorrupted.cpp
Uvidíte: A exampleFileCorrupted.cpp
Potvrdit změny: svn commit -m "Commit Message"
Dejte mi vědět, jestli to pomohlo.
To funguje pro mě:
svn rm --keep-local THE_CORRUPTED_FILE
svn add THE_CORRUPTED_FILE
svn ci
Pozdravy,
Udělejte si samostatnou novou pokladnu a zkopírujte změny, které jste provedli v této staré pracovní kopii, do nové.
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 .
@siddhadev skript by měl fungovat, ale pro ty, kteří dávají přednost ručnímu:
lastworkingrev.txt
sha1sum lastworkingrev.txt
find . -name "SHA1_CHECKSUM.svn-base"
a přepište jej obsahem lastworkingrev.txt
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.
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 ...
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.
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í.
Smazat Stávající kopii a vzít novou kontrolu váš problém bude vyřešen.
Proveďte čištění týmu SVN-> Vyčištění.