Как я могу исправить SVN 'Повреждение текстовой базы рабочей копии'? - PullRequest
31 голосов
/ 05 ноября 2010

После многих счастливых фиксаций в моем 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'

Ответы [ 12 ]

34 голосов
/ 26 января 2015

Это была ошибка.

svn: E155017: Working copy text base is corrupt
svn: E200014: Checksum mismatch for text base of : '/home/.../exampleFileCorrupted.cpp'
....

ЯСНОЕ РЕШЕНИЕ, КОТОРОЕ РАБОТАЛО ДЛЯ МЕНЯ ГЛАВНО:

ВНИМАНИЕ: Скопируйте файл в другой файл вне среды SVN.

cp exampleFileCorrupted.cpp ~/Desktop/

затем следуйте ниже:

  1. перейдите на путь, по которому у вас есть поврежденный файл (который указывается после: Несоответствие контрольной суммы для текстовой базы )
  2. svn rm --force exampleFileCorrupted.cpp

    Вы увидите: D exampleFileCorrupted.cpp

  3. Скопируйте файл, который вы сохранили до точки 1 в папке SVN, в которой вы находитесь , с:

    cp ~/Desktop/exampleFileCorrupted.cpp .

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

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

    Вы увидите: Пример файлаCorrupted.cpp

  2. Фиксация изменений : svn commit -m "Commit Message"

Дайте мне знать, если это помогло.

18 голосов
/ 19 октября 2016

Это работает для меня:

svn rm --keep-local THE_CORRUPTED_FILE
svn add THE_CORRUPTED_FILE
svn ci

С уважением,

15 голосов
/ 18 октября 2013
  1. Скопируйте проблемный файл в другое место,
  2. Удалить и зафиксировать файл в хранилище,
  3. Скопируйте ваш файл в SVN и передайте
15 голосов
/ 05 ноября 2010

Просто сделайте отдельную свежую проверку и скопируйте изменения, которые вы сделали в этой старой рабочей копии, в новую.

7 голосов
/ 19 июня 2013

В более новых версиях 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 на https://gist.github.com/siddhadev/5814802. Он заменит поврежденный файл svn-base новым.

3 голосов
/ 29 октября 2013
Скрипт

@ siddhadev должен работать, но для тех, кто предпочитает делать это вручную:

  1. Экспортировать последнюю версию проблемного файла как lastworkingrev.txt
  2. Получить контрольную сумму sha1 с помощью sha1sum lastworkingrev.txt
  3. Найдите исходный файл subversion с помощью find . -name "SHA1_CHECKSUM.svn-base" и перезаписайте его содержимым lastworkingrev.txt
  4. Commit
2 голосов
/ 01 апреля 2015

У меня была такая же проблема, но ни один из предыдущих ответов не помог.В моем случае хранилище Subversion было в версии 1.6, но я позволил IntelliJ оформить заказ в версии 1.7.Не было никаких признаков несоответствия версий, кроме ошибки «svn: E200014: Несоответствие базовой контрольной суммы». Простая проверка нового дерева с правильной версией устранила проблему.

0 голосов
/ 16 июня 2017

Я научился не доверять тому, что мой рабочий каталог находится под контролем версий. Когда я готов к фиксации, я делаю рекурсивный анализ и копирую изменения в извлеченный каталог. Таким образом, если SVN захлебывается, все, что я делаю, это rm -Rf извлечение и повторное извлечение, затем повторите команды копирования.

Я не пришел сюда в поисках решения. Я искал причину такого грубого поведения и ничего не нашел. Это происходит, даже когда я единственный человек, использующий ветку и делающий все из командной строки, которой я доверяю больше, чем Eclipse или любой другой интерфейс.

0 голосов
/ 08 апреля 2017

Я пробовал все выше, очистка не работает.SVN рекомендует мне оформить заказ на новую копию.Но проект слишком большой, и я изменил слишком много кодов, сравнение будет стоить много времени.Вот как я решил проблему с каждым сохранением изменений.

  1. Удалить все папки .svn .Эта папка может существовать одна или много зависит от версии SVN.Просто найдите каждый и удалите его.
  2. Оформление рабочей папки.Появится предупреждение «не пустая папка», нажмите «да».Затем рабочая копия восстанавливается.
0 голосов
/ 09 декабря 2015

Удалите существующую копию и возьмите новую проверку, ваша проблема будет решена.

...