ちょっと厄介なバグがあって、原因を調べたい。
ただ原因に心当たりがあまりない。(心当たりが多すぎる)
このような状況なので、どのリビジョンからこのバグが入り込んだか調べたいのだけど意外と面倒。
大まかにやらなければいけないことは
- 該当ブランチが更新されたリビジョンを列挙する(svn log)
- 該当バージョンのブランチのチェックアウトする (svn co)
- ビルドする(make)
- QEMUで起動する
- バグが再現するか調べる
の5個。
2-5はバグが再現しなくなるまで繰り返す。
これを手でいちいちやっていたのでは、面倒なのでRubyで適当にスクリプトを書いて1-4を自動化した。
1-4が完了するのには時間がかかるので他の作業をしつつ、QEMUがたまに起動したらちょっと試してみるみたいな感じでとても便利。
スクリプトを書いてから気づいたのだけど、本来これは自分のSchemeインタプリタにやらせるべき仕事だった。