SVN - Несоответствие контрольной суммы при обновлении


122

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

org.tigris.subversion.javahl.ClientException: 
Checksum mismatch while updating 'D:\WWW\Project\\.svn\text-base\import.php.svn-base'; expected: '3f9fd4dd7d1a0304d8020f73300a3e07', actual: 'cd669dce5300d7035eccb543461a961e'

Почему я это получаю? Как я могу это исправить?

Ответы:


70

Самый простой способ исправить это (если у вас мало изменений) - скопировать ваши изменения в другой каталог, удалить каталог, в котором был разрегистрирован ваш проект, и снова проверить проект.

Затем скопируйте свои изменения обратно (не копируйте никакие папки .svn), зафиксируйте и продолжите.


9
Я просто удалил папку, в которой был проблемный файл, и обновил весь проект. Теперь вроде нормально.
Коралек М.

+1 Другая альтернатива, которую я нашел,
позволила

@SeanDowney, как это сделать?
arvindwill

@arvindwill Извините, в моем комментарии я не совсем ясно понял, этот метод намного проще. Вот страшная альтернатива: maymay.net/blog/2008/06/17/…
SeanDowney

2
Это вообще не конкретное исправление. Вы всегда можете удалить все свои локальные данные и начать с новой копии из репо.
Tim

197

В случае , если вы используете SVN 1.7+ есть обходной путь описан здесь .

Напомним:

  1. Перейдите в папку с файлом, вызывающим проблемы
  2. Выполните команду svn update --set-depth empty(обратите внимание: это приведет к удалению ваших файлов, поэтому сначала сделайте копию!)
  3. Выполнить команду svn update --set-depth infinity

17
Хотя это сработало для меня, обратите внимание, что "svn update --set-depth empty" удалит все из этого пути, поэтому сначала сделайте копию
tristanbailey 02

3
Это отлично сработало для исправления гигантского репозитория в удаленном месте. Хотя выполнение новой проверки могло бы сработать, это заняло бы более часа; это заняло минуты.
Брайан Гиллеспи

привет, я использую окно и tortoisesvn в качестве svn-клиента .. Я пробовал ваше решение. но оно все еще показывает isse
Амит Бера

Просто заменил каталог .svn из нового репозитория на старый, все
заработало

У меня это сработало, спасибо! Стоит отметить, что пункт №1 - это перейти к фактической папке (или файлу), которая вызывает проблему. Тогда вам не придется много обновлять. У меня была папка с несколькими десятками файлов, в которой я использовал Tortoise «Обновить до-> только этот элемент» в папке, а затем «Обновить до-> полностью рекурсивно», чтобы все это вернуть. Тем не менее, все помните, что это удаляет файлы в этой папке! На медленном канале VPN с многогигабайтным репозиторием и тщательно настроенными параметрами --set-depths "стандартное" решение было просто бесполезным.
dash-tom-bang

6

У меня была такая же проблема. Основным провайдером был антивирус «FortiClient» (антивирус + VPN-клиент). Когда я отключил его - все обновления / проверки были сделаны правильно


1
Это единственный ответ, который решил мою проблему. Я никогда не мог подумать об этом. Спасибо!
время

5

Я нашел более простой способ решить эту проблему. Вы не можете сделать это прямо из затмения. шаги:

  1. Перейдите к структуре папок рабочей области в Windows
  2. переименовать папку
  3. обновить в затмении
  4. Теперь папка и файлы будут удалены из проекта в eclipse и появятся в новой переименованной папке.
  5. Теперь попробуйте вариант «Синхронизировать с репозиторием».

Это восстановит базовую текстовую папку в .svnfolder. Несовпадение контрольной суммы при обновлении ошибка больше не появится.


1

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


1

У меня была такая же ошибка, но для одного файла. В IntelliJ IDEA я смог сделать копию файла, затем перейти в проект и удалить соответствующий файл, а затем успешно выполнить фиксацию. Затем я создал новый файл с тем же именем и скопировал в него содержимое. Я предполагаю, что вы потеряете историю изменений, но это работает.


1

Если с вами работает коллега:

1) попросите его переименовать файл, вызывающий проблемы, и commit

2) вы update(теперь вы видите файл с неверной контрольной суммой с другим именем)

3) переименуйте его обратно в исходное имя

4) commit(и попросите коллегу updateвернуть имя файла в исходное состояние)

Это решило проблему для меня.


1

Я нашел очень хорошее решение, которое решило мою проблему. Хитрость заключается в том, чтобы отредактировать svn DB (wc.db).

Решение описано на этой странице: http://www.exchangeconcept.com/2015/01/svn-e155037-previous-operation-has-not-finished-run-cleanup-if-it-was-interrupted/

Если ссылка не работает, просто посмотрите и следуйте этим инструкциям: введите описание изображения здесь

Я использовал инструмент sqlite из http://sqlitebrowser.org/ .


1

Я использую Tortoise SVN, после того, как все решения на этой странице не работают,

Я наконец создаю резервную копию проблемного файла. и используйте для Repo Browserудаления проблемного файла в нем, затем обновите локальную папку, чтобы файл в локальной папке был удален. Затем скопируйте файл резервной копии, и Add > Commitя смогу успешно обновить.

Единственный минус этого метода - история этого файла будет удалена.


0

Чтобы решить эту проблему, выполните следующие действия:

  1. Откройте файл записей, расположенный в каталоге .svn, в котором возникает ошибка.
  2. Найдите запись для файла, выдающего ошибку, и замените ожидаемое значение фактическим значением ошибки.
  3. Теперь синхронизируй и попробуй обновить.

Если все равно не работает. Попробуйте эти. Это просто обходной путь:

  1. Удалите файл из вашей системы.
  2. Удалите запись файла из файла записей. (Начиная от имени файла до специальных символов).
  3. Теперь синхронизируйте и обновите файл.

Это получит последнюю версию файла из репозитория, и все конфликты будут разрешены.


0

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


0

попробуйте удалить файл и удалить ссылку на файл из файловых записей в каталоге .svn


0

У меня была аналогичная ошибка и исправлена ​​следующим образом:

(Мое «исправление» основано на предположении, которое может быть верным, а может и не быть, поскольку я не так много знаю о том, как работает Subversion изнутри, но это определенно сработало для меня)

Я предполагаю, что .svn \ text-base \ import.php.svn-base должен соответствовать последней фиксации.

Когда я проверил файл, в котором была ошибка, базовый файл НЕ соответствовал последней фиксации в репозитории.

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

Тогда я смог успешно совершить коммит.


0

Мое решение было:

  1. Выполнить очистку svn из файловой системы
  2. Перейти в другую ветку
  3. Решать конфликты
  4. Перейти в "проблемную" ветку
  5. Выполнить очистку из Spring Tool Suite
  6. Выполнить обновление проекта

0

1. 'обновить до возврата' проверить 'только этот элемент' в каталоге 2. обновить еще раз проверить 'Полностью рекурсивный'

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.