Как устранить «ошибки целостности», обнаруженные с помощью «hg verify» - PullRequest
3 голосов
/ 15 июня 2019

У меня есть общий репозиторий, для которого hg verify выявляет семь проблем, связанных с очень старым набором изменений (@ 2445).

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

Обратите внимание, что я успешно использовал "hg convert" для создания нового репозитория, который проходит тест hg verify, но, конечно, ревизию хэши все разные, так что это не совсем решение для «испорченный» репозиторий, который находится в битовой корзине и клонирован другими.

Описание проблемы

Репозиторий на битбакете был клонирован на две машины, одну работает hg 4.7.2, а другой работает hg 5.0.1.

Клон на машине hg 4.7.2 никогда не имел явных проблем, но обновление до hg 5.0.1 на другом заставило меня запустить "hg verify", которая выявляет одинаковые 7 ошибок на обеих машинах.

(На машине hg 5.0.1 выявлены дополнительные проблемы, связанные с "fncache", но они выходят за рамки этого вопроса.)

7 ошибок указаны в разделе «hg verify» начало вывода:

crosschecking files in changesets and manifests
checking files

Первое сообщение об ошибке:

MI/MI_s15/all/done@2445: dbb0190415fa not in manifests

и все остальные ссылаются на тот же локальный номер "@ 2445".

Последняя строка вывода «hg verify»:

(first damaged changeset appears to be 2445)

Попытки ремонта

Следующие попытки не смогли решить эти проблемы:

a) hg debugrebuildstate -r tip

b) hg debugrebuildfncache # завершился неудачно с объяснением: "(не перестраивается fncache, потому что репозиторий не поддерживает fncache)"

c) В новом каталоге на машине hg 5.0.1 клонирование хранилища из его дома на bitbucket не помогло.

d) В недавно клонированном репо, созданном в (c) выше:

hg strip --rev 2444
hg pull -u
# `hg verify` shows the same 7 errors
hg debugrebuildfncache # now succeeds
# `hg verify` shows the same 7 errors

Аналогичные попытки также не увенчались успехом.

debugindex

В случае, если это поможет:

   $ hg debugindex MI/MI_s15/all/done
   rev linkrev nodeid       p1           p2
     0    1337 b5d33daadd43 000000000000 000000000000
     1    2445 dbb0190415fa 000000000000 000000000000
...