SVN - несоответствие контрольной суммы при обновлении
Когда я пытаюсь обновить некоторые файлы из Subversion, я получаю сообщение об ошибке:
org.tigris.subversion.javahl.ClientException:
Checksum mismatch while updating 'D:\WWW\Project\\.svn\text-base\import.php.svn-base'; expected: '3f9fd4dd7d1a0304d8020f73300a3e07', actual: 'cd669dce5300d7035eccb543461a961e'
Почему я это понимаю? Как я могу это исправить?
Ответы
Ответ 1
Самый простой способ его исправить (если у вас мало изменений) - это скопировать ваши изменения в другой каталог, удалить каталог, в котором был выгружен проект, и снова проверить проект.
Затем скопируйте свои изменения (не копируйте папки .svn) и не совершайте и продолжайте.
Ответ 2
Если вы используете SVN 1.7+, здесь описан обходной путь здесь.
Просто чтобы наброситься:
- Перейдите в папку с файлом, вызывающим проблемы.
- Выполнить команду
svn update --set-depth empty
(обратите внимание: это приведет к удалению ваших файлов, поэтому сначала сделайте копию!)
- Выполнить команду
svn update --set-depth infinity
Ответ 3
Эти шаги работали хорошо для меня
-
Перейдите в папку с файлом, вызывающим проблемы.
-
Выполнить команду svn update --set-depth empty
(обратите внимание: это будет
удалите свои файлы, поэтому сначала сделайте копию!)
-
Выполнить команду svn update --set-depth infinity
Но может ли кто-нибудь сказать мне, почему это происходит? любая особая причина для этого, поскольку у меня очень большое репо, и все это время сложно, а свежий контроль не является вариантом, так как репо большое.
Ответ 4
У меня была простая проблема. Основным поставщиком был антивирус "FortiClient" (антивирус + VPN-клиент). Когда я отключил его - все обновление/проверка была выполнена правильно
Ответ 5
Я нашел более простой способ исправить эту проблему.
Вы не можете сделать это прямо из затмения.
Шаги:
- Перейдите к структуре папок рабочего пространства в окнах
- переименовать папку
- Обновить в eclipse
- Теперь папка и файлы будут удалены из проекта в eclipse и появятся в новой переименованной папке
- Теперь попробуйте вариант "Синхронизировать с репозиторием".
Это приведет к восстановлению папки текстовой базы в .svnfolder. Несоответствие контрольной суммы при обновлении ошибки больше не отображается.
Ответ 6
Это случилось со мной, используя плагин Eclipse и синхронизацию. Файл, вызвавший проблему, не имел локальных изменений (и фактически никаких удаленных изменений с момента последнего обновления). Я выбрал "revert" для файла, без каких-либо изменений в файлах, и все вернулось к нормальному.
Ответ 7
У меня была такая же ошибка, но для одного файла. В IntelliJ IDEA мне удалось сделать копию файла, затем зайти в проект и удалить файл, о котором идет речь, а затем успешно выполнить. Затем я создал новый файл с тем же именем и скопировал содержимое в него. Я думаю, вы потеряете историю изменений, но она действительно работает.
Ответ 8
Если у вас есть коллега, работающий с вами:
1) попросите его переименовать файл, вызывающий проблемы, и commit
2) вы update
(теперь вы видите файл с недопустимой контрольной суммой с другим именем)
3) переименуйте его обратно в исходное имя
4) commit
(и попросите коллегу update
вернуть имя файла в его исходное состояние)
Это решило проблему для меня.
Ответ 9
Я нашел очень приятное решение, что SOLVED моя проблема. Хитрость заключается в редактировании 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/.
Ответ 10
Я использую Tortoise SVN, после того, как выложили все решения на этой странице и не работают,
Я наконец резервное копирование файла проблемы. и используйте Repo Browser
, удалите файл проблемы в нем, затем обновите локальную папку, чтобы удалить файл в локальной папке. Затем скопируйте обратно файл резервной копии и Add > Commit
, после чего я смогу успешно обновить.
Единственный недостаток этого метода - история этого файла будет удалена.
Ответ 11
Чтобы решить эту проблему, выполните следующие действия:
- Откройте файл записей, расположенный в каталоге .svn, где вы получаете сообщение об ошибке.
- Найдите запись для файла, дающего ошибку, и замените ожидаемое значение фактическим значением по ошибке.
- Теперь синхронизируйте и попробуйте обновить.
Если он все еще не работает. Попробуйте эти. Это всего лишь обходное решение:
- Удалите файл из вашей системы.
- Удалить запись файла из файла записей. (Начиная с имени файла до специальных символов).
- Теперь синхронизировать и обновлять файл.
Это позволит получить последнюю версию файла из репозитория, и все конфликты будут разрешены.
Ответ 12
имел аналогичную проблему на сервере, но каталог SVN был очень большим, не хотел удалять и пересинхронировать, поэтому я просто сделал копию файлов локально, а затем удалил их. Когда обновление выполнено успешно и добавлены файлы.
Ответ 13
попробуйте удалить файл и удалить ссылку на файл из записей файла в каталоге .svn
Ответ 14
У меня была аналогичная ошибка и исправлена следующим образом:
(Мое "исправление" основано на предположении, которое может быть или не быть правильным, поскольку я не знаю, как много работает над тем, как работает подрывная деятельность, но это определенно сработало для меня)
Я предполагаю, что .svn\text-base\import.php.svn-base будет соответствовать последней фиксации.
Когда я проверил файл, на котором была ошибка, базовый файл НЕ соответствовал последнему фиксации в репозитории.
Я скопировал текст из последней фиксации и сохранил его в папке .svn, заменив неправильный файл (сделав резервную копию, если мои предположения ошибочны). (файл был отмечен только для чтения, я очистил этот флаг, перезаписал его и вернул его только для чтения)
Затем я смог успешно выполнить.
Ответ 15
Мое решение было:
- Выполнение svn очистки из файловой системы
- Переключиться на другую ветку
- Решить конфликты
- Перейдите в "проблемную" ветвь
- Выполнить очистку из Spring Tool Suite
- Выполнение обновления проекта
Ответ 16
1. "до реверсии" отметьте "только этот элемент" в каталоге
2. обновить еще раз проверить "полностью рекурсивный"