Mercurial: сообщение "abort: index 00changelog.i поврежден!"после запуска команды sed.Как с этим бороться? - PullRequest
9 голосов
/ 08 октября 2011

У меня есть проект, созданный 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 ]

7 голосов
/ 08 октября 2011

Обратите внимание, что есть два 00changelog.i файла:

  • один в .hg / 00changelog.i, который является небольшим заполнителем обратной совместимости для древних версий
  • другой (тот, который вы повредили) в .hg / store / 00changelog.i
0 голосов
/ 08 октября 2011

Я бы использовал конвертирование, чтобы заново сгенерировать репо или пересадку, чтобы переместить патчи на новый.Удачи.

...