Что делать если svn: database disk image is malformed

database disk image is malformedЕсли при работе с Svn у вас возникла такая ситуация, а у вас куча измененных файлов, и замаячила вторая дата под портретом незакомиченой работы за день и кажется что "все приплыли" остановитесь и не паникуйте.

Скорее всего произошло паралельная попытка раборты с локальной копией. На пример была попытка выполнить svn update и IDE (м.б. PHPShtorm) попыталась обновить инфу.

Для решения стоит попробовать следуещее:

* выполните в корне рабочей копии команду

sqlite3 .svn/wc.db "pragma integrity_check"

* затем, если у вас после выполнения в выводе появилось что то на подобии

*** in database main ***
On tree page 9 cell 0: 2nd reference to page 10234
Page 9944 is never used
Page 9947 is never used
Page 9948 is never used
Page 9949 is never used
Page 9950 is never used
...

* выполните

sqlite3 .svn/wc.db "reindex nodes"

* затем

sqlite3 .svn/wc.db "reindex nodes"

Если после выполнения "svn update" ошибка

svn: E200030: sqlite[S11]: database disk image is malformed
svn: E200030: Additional errors:
svn: E200030: sqlite[S11]: database disk image is malformed

все еще имеет место быть следует сделать svn chceckout вашей ветки/транка в отдельной (от этой локальной копии) временной папке и затем заменить подпапку .svn вашей копии с ошибкой на такую же из временной папки.

# выйти в директорию на уровень выше
cd ..

# создать временную директорию и перейти в нее
mkdir svn_temp && cd svn_temp

# выполнить checkout
svn checkout svn://<your_svn_url>/<your_svn_path>

# скопировать папку .svn из временной папки поверх рабочей
cp -f .svn ../<your_working_copy_dir>/.svn

После этого можно удалить временную папку.

cd .. && del ./svn_temp

Все, можно пользоваться копией.