Какова основная причина несоответствия контрольной суммы SVN? - PullRequest
9 голосов
/ 22 февраля 2011

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

ОС: Windows 7 Клиент SVN: VisualSVN, TortoiseSVN

TortoiseSVN error message indicating corruption in checked-out copy

Ответы [ 6 ]

6 голосов
/ 20 июля 2012

1. Переименуйте поврежденный файл в вашем рабочем каталоге

2.Commit (он удалит поврежденный файл из репозитория и добавит переименованный)

3. Переименуйте файл обратно в исходныйимя в вашем рабочем каталоге

4.Commit

Работайте, как обаяние для меня, надеюсь, это поможет.

5 голосов
/ 22 февраля 2011

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

Подробнее о причинах и теории возникновения этой ошибки: (похожая проблема, где md5 был нулевым; где, как взначение отличается от значения на сервере)

Восстановление контрольной суммы SVN

3 голосов
/ 27 августа 2012

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

svn update --set-depth empty
svn update --set-depth infinity

Я не могу вспомнить, где я нашел решение, я хотел бы отдать должное, но не могу вспомнить, я нашел это в истории команд оболочки.

1 голос
/ 10 января 2012

У меня была такая ошибка.Самым простым решением, которое я нашел, было удаление папки, в которой находился файл, а затем обновление в моем клиенте svn.

Это восстанавливает контрольные суммы с сервера.

Разумеется, единственная проблема заключается в том, что любые изменения, сделанные вами до последнего коммита, будут потеряны.Если это простой исходный текстовый файл, вы можете скопировать весь контент в блокнот (или любой другой текстовый редактор), обновить svn, затем снова скопировать исходный текст в файл и зафиксировать.

0 голосов
/ 17 января 2018
  1. Прежде всего вам необходимо подключить базу данных SQLite (.svn \ wc.db)
  2. Получить контрольную сумму файла:

    SELECT CHECKSUM FROM NODES WHERE REPOS_PATH LIKE '%FILE_NAME%'
    
  3. Вам нужно удалить запись в обеих таблицах NODES и PRISTINE:

    DELETE FROM NODES WHERE CHECKSUM = 'CHECKSUM from 2.'
    DELETE FROM PRISTINE WHERE CHECKSUM = 'CHECKSUM from 2.'
    

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

0 голосов
/ 01 марта 2013

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

Мое решение - удалить / переместить папку, содержащую проблемные файлы, затем я извлек или снова обновил папку.

...