彷徨えるフジワラ

年がら年中さまよってます

アンチウィルスソフトによる Mercurial 履歴ファイルの破壊防止

本エントリも、備忘録代わりに「お気に入り」に入れておいたツィートの棚卸しシリーズの一部です(笑)

以前、リポジトリ連携による履歴取り込みやコミット等の契機で、部分的な hg verify を走らせることで、アンチウィルスソフトによる予期せぬ履歴情報の破壊を、いくらかは防げる or 早期検出できるかも?ということで:

修正提案のパッチを投函してみたのですが、部分 verify 機能の導入部分に関する修正は、結局採用されませんでした

ただ、今でも定期的に「リポジトリが壊れた!」ツィートを見かけるので、何か対処をしたいところです。
先述の提案は:

するアプローチでしたが、アンチウィルスソフトによるバックグラウンドでの隠密破壊を検出する上では、実は:

というアプローチの方が良いのかもしれません。

Matt 自身は、破壊の早期検出にはあまり興味がないらしく、本体への取り込みは難しそうですので、以下のようなエクステンションの実装を考えています。

  • 直前のトランザクションの内容を検証する、部分 verify 処理をフックとして実装
    内容的には mercurial/verify.py からの引用メイン
  • エクステンション有効時は、precommit や prechangegroup に自動的にフック登録
  • commit や pull/unbundle 実施時に、フック経由で部分 verify を実施

なお、西原さんの手による:

履歴情報追加時に履歴情報管理領域 (.hg/store) を退避するbackupstore エクステンションもありますので、今すぐ安全策を講じておきたい方は、こちらをお試しください。