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
Це зовсім не конкретне виправлення. Ви завжди можете видалити всі свої локальні дані та почати зі свіжої копії з репо.
Тім

197

У разі , якщо ви використовуєте SVN 1.7+ є обхідний шлях описаний тут .

Просто для резюме:

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

17
Хоча це працювало для мене, зауважте, що "svn update
set-deep

3
Це чудово підходило для фіксації гігантського сховища на віддаленому місці. Хоча нова перевірка спрацювала б, це зайняло б більше години; це зайняло хвилин.
Брайан Гілзпі

привіт, я використовую вікно та tortoisesvn як svn-клієнт .. Я спробував ваше рішення. але це все ще показує isse
Amit Bera

Щойно замінено .svn каталог з нового сховища на старий, він працював :)
harishkumar329

Це чудово працювало для мене, дякую! Варто відзначити, що пункт №1 полягає в тому, щоб переглядати фактичну папку (або файл), що спричиняє проблему. Тоді вам не доведеться багато оновлювати. У мене була папка з декількома десятками файлів, в якій я використовував у папці «Оновити до-> лише цей елемент», а потім «Оновити до-> повністю рекурсивно», щоб повернути це все. Все ж будьте обережні, що це видаляє файли в цій папці! На повільному VPN-зв’язку з багатогігабайтним РЕПО та тонко налаштованою - глибиною налаштування на всьому протязі "стандартне" рішення було просто марним.
dash-tom-bang

6

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


1
Це єдина відповідь, яка вирішила мою проблему. Я ніколи про це не міг подумати. Дякую!
timeon

5

Я знайшов простіший спосіб виправити це питання. Ви не можете зробити це безпосередньо від затемнення. Кроки:

  1. Перейдіть до структури папки робочої області у вікнах
  2. перейменуйте папку
  3. освіжитися в затемненні
  4. Тепер папка та файли будуть видалені з проекту у затемненні та з’являться під новою перейменованою папкою
  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

У мене була подібна помилка та виправлено наступне:

(Моє «виправлення» базується на припущенні, яке може бути, а може і не бути правильним, оскільки я не знаю, що багато про те, як субверсія працює внутрішньо, але для мене це безумовно спрацювало)

Я припускаю, що очікується, що .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.