いつの間にかバグを埋め込んでしまっていた。単体テストの枠組みができていない部分で、関数の書き換えを行っていた。日々のプログラムの動作確認では、その関数を呼び出していなかった。
「何か変だぞ」という状況で、以前のバージョンではどうだったのだろう。たくさんの改変をする前のコード、たぶんバグを埋め込む前のコードとの比較をするには、SVN(TortoiseSVN)でのリポジトリブラウザが重宝する。
該当のフォルダで右クリックし[TortoiseSVN][repo-browser]を選択する。
リポジトリブラウザが開かれるので、右上の場所の[Revision]をバグを埋め込んでしまう前のRevisionにして、その時期のファイル構成をたどり、ファイルを選択して開く。
そうすると、その時期のファイルを開けるので、問題の関数の実装を、当時の実装と今の実装とを比較する。そうすれば、どのような間違いを埋め込んでしまったのかを知ることができる。
追記:開発中の版のあるディレクトリに影響を与えずに、以前の版を試してみるには。
SVNで開発中の版があるディレクトリで以前の版を試そうとすると、バージョン管理していないファイルの影響を受けたりするので、別のディレクトリで試すことがある。
リポジトリブラウザーを開いて、リポジトリブラウザー上のフォルダを、エクスプロラー上のフォルダにdrag&dropすると、コピーできる。このとき、リポジトリブラウザーの右上で、SVN上のrevisionを選んでおいてから、リポジトリブラウザーの表示を確認してコピーする。
コピー先では、単なるコピーなので、間違ってコミットしたりしてしまう心配はない。