Mercurial: сообщение "abort: index 00changelog.i поврежден!" после запуска команды sed. Как с этим бороться?
У меня есть проект от Mercurial. Однажды я запустил такую команду, как...
$ find . -type f | xargs sed -i.bkp 's/my_func/another_func/'
... в этом проекте. Тогда Mercurial просто перестал работать над этим:
$ hg status
abort: index 00changelog.i is corrupted!
Файл 00changelog.i
не содержит замененную строку, и даже если я перееду 00changelog.i.bkp
в 00changelog.i
проблема осталась. hg verify
тоже не помогло:
$ hg verify
abort: index 00changelog.i is corrupted!
Я решил эту проблему, клонировав проект из моего удаленного репозитория в другой каталог, а затем скопировав .hg
из моего клонированного хранилища в испорченное. Однако мне интересно: есть ли другой, более практичный способ его решения? Кстати, почему эта проблема происходит, если "поврежденный" файл даже не изменяется?
2 ответа
Обратите внимание, что существует два файла 00changelog.i:
- один в.hg/00changelog.i, который является небольшим заполнителем обратной совместимости для древних версий
- другой (тот, который вы испортили) в.hg/store/00changelog.i
Я бы использовал конвертирование, чтобы заново сгенерировать репо или пересадку, чтобы переместить патчи в новое. Удачи.