Skip to content

Восстановление рабочей копии SVN

Восстановить обновление рабочей копии SVN при ошибке, связанной с отсутствующей контрольной суммой файла prog.csv в локальной базе. Инструкция составлена по случаю на объекте: Cleanup и Revert завершались ошибкой, а после ручной правки базы работа SVN восстановилась.

При обновлении или выполнении Cleanup появляется сообщение:

Failed to run the WC DB work queue
from pristine store, because no checksum is recorded for this file

Ошибка TortoiseSVN: Cleanup не может обработать prog.csv, поскольку для файла не записана контрольная сумма

Рисунок 1 — ошибка обработки рабочей очереди SVN для файла prog.csv.

В сообщении указан путь к проблемному файлу. Он понадобится при проверке записей в базе.

Программа для работы с базами SQLite. В описанном случае использовалась DB Browser for SQLite (SQLiteDatabaseBrowser).

1. Откройте локальную базу SVN

Section titled “1. Откройте локальную базу SVN”
  1. Запустите DB Browser for SQLite.
  2. Нажмите Open Database / Открыть базу данных.
  3. В корне проблемной рабочей копии откройте скрытую папку .svn, затем файл wc.db.

Для рабочей папки на скриншоте полный путь:

C:\SVN_Global\.svn\wc.db

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

2. Проверьте застрявшие задачи

Section titled “2. Проверьте застрявшие задачи”

Перейдите на вкладку Execute SQL / Выполнить SQL, вставьте запрос и выполните его:

SELECT * FROM WORK_QUEUE;

Посмотрите записи очереди и найдите операцию с путём к prog.csv, указанным в ошибке.

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

SELECT id, CAST(work AS TEXT) AS operation
FROM WORK_QUEUE;

Сверяйте полный путь, поскольку в проекте могут быть разные файлы с именем prog.csv. Если соответствующей записи нет, описанный случай не подтверждён — не переходите к удалению.

3. Выполните один из вариантов из описания решения

Section titled “3. Выполните один из вариантов из описания решения”

Очевидец привёл два варианта вмешательства в базу. Они изменяют разные таблицы; выполнять оба подряд как обязательную последовательность не нужно.

Вариант А. Удаление записей о prog.csv

Section titled “Вариант А. Удаление записей о prog.csv”

Сначала посмотрите, какие записи попадут под условие удаления:

SELECT wc_id, local_relpath, op_depth
FROM NODES
WHERE local_relpath LIKE '%prog.csv%';

Запрос из описания решения:

DELETE FROM NODES WHERE local_relpath LIKE '%prog.csv%';

Он удаляет сведения о файлах из таблицы NODES, а не задачи очереди. Условие охватывает все пути, содержащие prog.csv. Если предварительный просмотр показывает другие файлы, кроме относящихся к вашему случаю, не выполняйте массовое удаление по этому шаблону.

Вариант Б. Полная очистка очереди задач

Section titled “Вариант Б. Полная очистка очереди задач”

Для полной очистки таблицы незавершённых операций в описании приведён запрос:

DELETE FROM WORK_QUEUE;

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

  1. Убедитесь, что выбранный SQL-запрос выполнен без ошибки.
  2. Нажмите Write Changes / Записать изменения.
  3. Закройте базу и программу DB Browser for SQLite, чтобы она не удерживала файл базы открытым.

5. Повторите обновление SVN

Section titled “5. Повторите обновление SVN”
  1. В Проводнике откройте контекстное меню рабочей папки и выполните SVN Update.
  2. Проверьте, что обновление завершается без сообщения с рисунка 1.
  3. Через TortoiseSVN → Check for modifications проверьте локальные изменения и состояние файлов prog.csv. Сравните их с сохранённой копией: после правки базы не должно остаться неожиданных удалений или потери локальных правок.

Результат в описанном случае: после изменения базы работа SVN восстановилась. На другом АРМ результат нужно подтвердить обновлением и проверкой файлов.

Если ошибка повторяется, сохраните её текст и резервную копию для дальнейшего разбора. Не продолжайте удалять записи наугад.

Справка: чем отличаются NODES и WORK_QUEUE

NODES хранит метаданные версионируемых файлов и каталогов, а WORK_QUEUE — незавершённые операции рабочей копии. Поэтому приведённые команды не являются равнозначными способами очистки очереди. Назначение таблиц описано в схеме базы Apache Subversion.

Все инструкции для ПНР