Якщо під час роботи з Svn у вас виникла така ситуація, а у вас купа файлів зі змінами, і здається що на всій роботі за день можна ставити жирний хрест, зупиніться і не панікуйте.
Скоріше за все відбулась паралельна спроба роботи з локальною копією. На приклад була спроба виконати svn update і той же час, можливо IDE спробувала обновити інфу.
Для вирішення проблеми варто спробувати наступне:
* виконайте команду в корені робочої копії
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 вашої поточної копії (що з помилкою) на підпапку з тимчасової копії.
Для цього зробимо наступне:
# перейдемо в безпечне місце і створимо тимчасову папку
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
Після цього можна видалити тимчасову папку.
del ~/svn_temp
Все, можна користуватись відновленою копією.