У меня есть общий репозиторий, для которого 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