У Mercurial отсутствует Revlog

#mercurial #tortoisehg

#mercurial #tortoisehg

Вопрос:

Я получаю ошибку «отсутствует revlog» при использовании Mercurial (через TortoiseHg). Кто-нибудь знает, как исправить это репозиторий?

 % hg --repository C:SourceProject verify --verbose
repository uses revlog format 1
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
data/MyProject.Class.Library.Tests/Part/FileName.cs.orig.i@1: missing revlog!
1: empty or missing MyProject.Class.Library.Tests/Part/FileName.cs.orig
MyProject.Class.Library.Tests/Part/FileName.cs.orig@1: fb25dd9d5f41 in manifests not found
4384 files, 1354 changesets, 12803 total revisions
3 integrity errors encountered!
(first damaged changeset appears to be 1)
[command returned code 1 Wed May 11 13:31:14 2011]
  

Комментарии:

1. На этот раз это не поможет, но есть хороший намек на то, что стало причиной этого. revert Команда mercurial создает .orig файлы, которые хранятся в вашем рабочем каталоге, но не в вашем репозитории. Если кто-то случайно зафиксировал один из них, в вашем .hg/data регионе он оказался недоступен. Это нормально, но если затем кто-то за пределами Mercurial рекурсивно удалил все .orig файлы, думая, что они будут только в рабочем каталоге, они также удалили файл в .hg/data .

Ответ №1:

Вы можете попробовать использовать расширение convert с convert.hg.ignoreerrors значением True, как описано в wiki. Имейте в виду, что это изменит хэши, и поврежденные файлы, вероятно, будут полностью потеряны.

Ответ №2:

В Mercurial wiki есть страница о повреждении репозитория. Если решение, предложенное @Cat Plus Plus, не работает для вас, вы можете попытаться восстановить revlog.

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

В вашем случае вам понадобилась бы точная копия data/MyProject.Class.Library.Tests/Part/FileName.cs.orig в том виде, в каком она существовала в редакции 1 репозитория.