Mercurial で壊れたリポジトリを復旧する方法
Windows で Mercurial リポジトリサーバを構築しているとウイルス対策ソフトウェアが悪さをしてリポジトリを壊してしまうことがあるそうです(スキャン対象から外せればいいのですが、設定ができないようにガードされていることもよくある話です)
万が一壊れてしまったときに備えてメモしておきます。
ネタ元
@ebc_2in2crc hg convert --config convert.hg.ignoreerrors=True でリカバリできるみたいです。上手くいく保証はないけれど、簡単そうだからやってみては? bit.ly/U5XL8w #mercurialjp
— Yuya Nishiharaさん (@yujauja) 9月 11, 2012
リカバリー方法
その1 : hg convert によるリカバリー
RepositoryCorruption - Mercurial
$ hg convert --config convert.hg.ignoreerrors=True REPO REPOFIX scanning source... sorting... converting... [Various messages, most of which will be the commit messages] ignoring: data/.DS_Store.i@26a47e9188c: no match found [More commit messages] .hgtags@78ff9079978f, line 1: tag '1.0b1' refers to unknown node updating tags
その2: ファイル削除後、convert によるリカバリー
上記 hg convert によるリカバリーでもダメだった場合、例えば履歴ファイルのヘッダ不正("index XXXX unknown YYYY" のようなメッセージが出る場合は、
- .hg/store から破損したファイルを削除
- hg convert
という手順になります。
- 作者: 藤原克則
- 出版社/メーカー: 秀和システム
- 発売日: 2009/01
- メディア: 単行本
- 購入: 10人 クリック: 195回
- この商品を含むブログ (61件) を見る
参考
@ebc_2in2crc @cointoss1973 #mercurialjp 履歴ファイルのヘッダ不正("index XXXX unknown YYYY" 系)なら『ファイル削除⇒convert で回収』、それ以外の場合は『convert で回収』といった感じの判断基準ですね
— FUJIWARA Katsunoriさん (@flyingfoozy) 9月 11, 2012