Как исправить SVN "Рабочая текстовая база рабочей копии повреждена"?
После многих счастливых попыток моего svn-репо, внезапно отношения стали кислыми... svn перевернул свою крышку и закричал: " Рабочая текстовая база рабочей копии повреждена!"
Что могло быть причиной этого? Как это исправить?
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'
Ответы
Ответ 1
Это была ошибка.
svn: E155017: Working copy text base is corrupt
svn: E200014: Checksum mismatch for text base of : '/home/.../exampleFileCorrupted.cpp'
....
ЧЕСТНОЕ РЕШЕНИЕ, КОТОРАЯ РАБОТАЕТ ДЛЯ МУЖЧИНЫ:
ВНИМАНИЕ: Скопируйте файл в другой файл вне среды SVN.
cp exampleFileCorrupted.cpp ~/Desktop/
а затем следуйте ниже:
- cd к пути, в котором у вас есть поврежденный файл
(который указан после: несоответствие контрольной суммы для текстовой базы)
-
svn rm --force exampleFileCorrupted.cpp
Вы увидите: D exampleFileCorrupted.cpp
-
Скопируйте файл, который вы сохранили, до точки 1 в папке SVN, в которой вы находитесь,:
cp ~/Desktop/exampleFileCorrupted.cpp .
(Не пропустите точку в конце, что означает "копировать здесь" )
-
Добавить в svn с помощью: svn add exampleFileCorrupted.cpp
Вы увидите: ПримерFileCorrupted.cpp
-
Зафиксировать изменения: svn commit -m "Commit Message"
Сообщите мне, помогло ли это.
Ответ 2
- Скопируйте проблемный файл в другое место,
- Удалить и зафиксировать файл в репозитории,
- Скопируйте файл в SVN и скопируйте
Ответ 3
Просто сделайте отдельную новую проверку и скопируйте изменения, внесенные в эту старую рабочую копию, в новую.
Ответ 4
Это работает для меня:
svn rm --keep-local THE_CORRUPTED_FILE
svn add THE_CORRUPTED_FILE
svn ci
Привет,
Ответ 5
С более новыми версиями subversion нет каталога .svn/text-base/
. .svn
хранится в рабочем корневом каталоге под .svn/pristine
, и сообщение об ошибке выглядит следующим образом:
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
Вы можете исправить это, используя bash script в https://gist.github.com/siddhadev/5814802.
Он заменит поврежденный файл svn-base новым.
Ответ 6
@siddhadev script должен работать, но для тех, кто предпочитает делать это вручную:
- Экспортировать последнюю версию проблемного файла как
lastworkingrev.txt
- Получить контрольную сумму sha1 с помощью
sha1sum lastworkingrev.txt
- Найдите дебютный файл subversion с помощью
find . -name "SHA1_CHECKSUM.svn-base"
и перезапишите его с содержимым lastworkingrev.txt
- Фиксировать
Ответ 7
У меня была такая же проблема, но ни один из предыдущих ответов не помог. В моем случае репозиторий Subversion был в версии 1.6, но я разрешил IntelliJ проверять версию 1.7. Не было обнаружено несоответствия версии, кроме ошибки "svn: E200014: несоответствие базовой контрольной суммы". Просто проверка нового дерева с правильной версией исправила проблему.
Ответ 8
Была ли эта проблема после фильтрации моего дампа с https://github.com/jasperlee108/svndumpfilterIN
Исправлено удаление контрольных сумм md5...
sed -i '/Text-copy-source-md5/d' eias_only.dmp
Однако возможны некоторые последствия...
Ответ 9
Удалить Существующую копию и получить новую проверку, ваша проблема будет решена.
Ответ 10
Я пробовал все выше, очистка не работает. SVN рекомендует мне проверить новую копию. Но проект слишком велик, и я изменил слишком много кодов, сравнение будет стоить много времени.
Вот как я решил проблему с каждым изменением.
- Удалите все папки .svn. Эта папка может существовать одна или много, зависит от версии SVN. Просто найдите каждый из них и удалите его.
- Оформить заказ рабочей папки. Он будет предупреждать "не пустую папку", нажмите "да". Затем восстанавливается рабочая копия.
Ответ 11
Я научился не доверять тому, что мой рабочий каталог находится под контролем версий. Когда я готов к фиксации, я делаю рекурсивный diff и копирую изменения в извлеченный каталог. Таким образом, если SVN задыхается, все, что я делаю, это rm -Rf checkout и сделать новую проверку, а затем повторить команды копирования.
Я не пришел сюда искать решение. Я пришла искать причину этого шелушащегося поведения и ничего не нашла. Это происходит даже тогда, когда я единственный человек, использующий ветку и делаю все из командной строки, которой я доверяю больше, чем Eclipse или любой другой интерфейс.
Ответ 12
Сделайте команду очистки SVN- > Очистка.