Mercurial репозитории повреждены скрытыми файлами, такими как.hgignore и.hgtags
Более чем в одном из HG-репозиториев, которые мы используем, периодически возникают проблемы с повреждением, и они всегда связаны со скрытыми (начиная с ".") Файлами, такими как.hgignore и.hgtags. Оба этих репозитория являются общими для пользователей Linux и Windows, если это имеет значение.
Внезапно во время работы с хранилищем операции могут быть остановлены такими сообщениями, как:
hg stat
abort: data/.hgtags.i@fa5433cf149c: no match found!
Проверка дает:
hg verify
repository uses revlog format 1
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
data/.hgignore.i@1: missing revlog!
1: empty or missing .hgignore
.hgignore@1: ac9811f0a619 in manifests not found
data/.hgtags.i@17: missing revlog!
17: empty or missing .hgtags
.hgtags@17: fa5433cf149c in manifests not found
1129 files, 18 changesets, 1179 total revisions
6 integrity errors encountered!
(first damaged changeset appears to be 1)
В этом репозитории я просто добавил.hgtags, и хранилище локально сразу же испортилось. Я всегда могу решить проблему временно, повторно клонировав из центрального хранилища, но проблема всегда появляется снова и снова.
Что здесь происходит? Я предполагаю, что если я сделаю реконструкцию / восстановление, как предложено в https://www.mercurial-scm.org/wiki/RepositoryCorruption, я могу получить новое репо без.hgignore и.hgtags, но тогда я предполагаю, что это будет просто снова испортится, если я добавлю новые версии.
1 ответ
Похоже, что какой-то скрипт очистки для удаления файлов, начинающийся с "~", время от времени превращался в.hg. Поскольку более новая функция "dotencode" в HG кодирует "." как "~2e", файлы revlog удалялись... Тайна разгадана.