Mercurial/リポジトリが壊れた

Mercurial/リポジトリが壊れた

バージョンと製造年月日

  • 2012-03-30
  • Mercurial 2.0.1

リポジトリが壊れた

archiveしようと思ったら。失敗してarchiveの処理が途中で止まってしまう

なんだか一部のファイルが無いno match foundと表示されて失敗している。 本当によくわからないのでとりあえず

hg verify

とやってチェックしてみた。

そうすると

checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
 data/hoge/piyo/fuga.png.i@0: missing revlog!
 0: empty or missing hoge/piyo/fuga.png
 hoge/piyo/fuga.png@0: XXXXXXXXXXXX in manifests not found
1022 files, 195 changesets, 1546 total revisions
3 integrity errors encountered!
(first damaged changeset appears to be 0)

だというのだ。

とにかくこのhoge/piyo/fuga.pngというファイルがおかしいようだ。

さらにリポジトリ全体をfuga.pngでgrepしていたら、これは.hg/dirstateというファイルに書きこまれていることがわかった。

こいつはファイル更新によって比較情報として使われるファイルらしく、とにかくこいつが更新されればいいんだろうと思った。

なので

  • fuga.pngどこかに保存
  • fuga.pngを一旦削除
  • コミット(ここでdirstateが更新されるはず)
  • 保存していたfuga.pngを元に戻す
  • コミット

と操作した。これで一応archiveが通常通りできるようになった。 なんで壊れたかはわからん。

参考サイト

タグ

vcs/hg/broken_repository.txt · 最終更新: 2017-10-10 10:50 by ore