ゴミ箱.net

汚物は消毒

Subversionのリポジトリが壊れて地獄を見た話

ある日Subversionのリポジトリにアクセスしてファイルをチェックアウトしようとしたら
no such revision
という見慣れぬエラーが出た。
特定のリビジョンで変更があったファイルを取得しようとするとエラーになるようだ。過去の履歴についても、そのリビジョンより前のリビジョンは特に問題なく取得できるが、そのリビジョン以降は取得することは出来ない。
svnadminによるダンプもそのリビジョンで停止するので不可能。どうあがいても絶望

リポジトリは悪名高いBerkeley DBではなくFSFS形式で作っている。リポジトリのフォルダの中のdb/props/の下を確認したら、特定のリビジョン番号に対応するファイルだけが消えていた。
その消えたファイルにはリポジトリで変更されたファイルの差分が含まれている。そのため、変更されたファイルのこのリビジョン以降の履歴が一切取得できない。
db/revprops/の下に保存されていたファイルが残っていたのは不幸中の幸い。

なぜファイルが1個だけ消えたのか原因は分からない。ハードディスクの異常か何かで偶発的にファイルが消えてしまったのか、それともリポジトリのフォルダをコピーしたときにエラーが発生してファイルが1個だけ消えてしまったのか。

リポジトリのバックアップは取ってあったが今回は役立たずだった。どうもリポジトリはだいぶ前に壊れていたがずっとそれに気づかずにいたせいで、最古のバックアップの時点ですでにリポジトリが壊れていた。そのためバックアップから消えたファイルをコピーして復活させることも出来ない。
さてどうしたものか。

続きを読む

スポンサーサイト

PageTop