У нас есть хранилище Mercurial, преобразованное из Subversion некоторое время назад, и сегодня мы заметили, что в хранилище есть файлы, которые имеют нет истории вообще.
Одним из симптомов такого поведения является то, что hg status сообщает о чистом файле, а hg log не сообщает об изменениях для того же файла:
> hg clone [repo]
> hg st -c FileWithMissingHistory.cs
C FileWithMissingHistory.cs
> hg blame FileWithMissingHistory.cs
FileWithMissingHistory.cs: no such file in rev [...]
> hg log FileWithMissingHistory.cs
> hg log FileWithMissingHistory.cs -f
abort: cannot follow nonexistent file: "FileWithMissingHistory.cs"
> hg log -v | grep FileWithMissingHistory.cs
[gives output, there arechangesets mentioning the file]
Очевидно, что имена файлов были изменены в примере. Я пытался использовать hg verify, но эта команда сообщает, что репо в порядке. Кто-нибудь испытывал это, и можем ли мы что-нибудь сделать, чтобы история «ожила»? Размещение фиктивной истории на рассматриваемых файлах было бы приемлемым, но неоптимальным.
EDIT:
Я провел еще одно исследование и заметил, что «FileWithMissingHistory.cs» был переименован из другого имени файла (hg copy + delete) в ревизии 238. Если я сделаю hg update -r238 и hg log в файле этой ревизии, я не получаю любая история. Выполнение журнала hg в исходном файле сообщает об истории, как и ожидалось, поэтому кажется, что история каким-то образом теряется при копировании (опять же, файл переименовывается с использованием hg copy, и набор изменений четко указывает, что файл был скопирован).