Подтвердить что ты не робот

Как исправить 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'
4b9b3361

Ответ 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 .

(Не пропустите точку в конце, что означает "копировать здесь" )

  1. Добавить в svn с помощью: svn add exampleFileCorrupted.cpp

    Вы увидите: ПримерFileCorrupted.cpp

  2. Зафиксировать изменения: 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- > Очистка.