2006 年 4 月 10 日ごろにバグを埋め込んでしまったらしい。そういう時は、CVS で日にちを指定して diff をかけるといい。4/9 と 4/11 の CVS リボジトリ全体の差分を取るには、次のコマンドを実行する。
$ cvs diff -u -D 2006/4/9 -D 2006/4/11
日づけを指定してチェック・アウトする場合は次のコマンドを使う (tc モジュールをチェック・アウトする場合)。
cvs checkout -D 2006/4/9 tc
なお、日付部分には ISO8601 の日付形式が使用可能。例えば、 2006-04-09 20:05 という風に時間まで指定することも可能。
CVS とアトミック・コミット
CVS でファイルの差分を取るのであれば、次のコマンドが使える。
$ cvs diff -r 1.1 -r 1.2 foo.c
これは、foo.c のリビジョン 1.1 と 1.2 の差分を取るコマンド。バグの混入したファイルが、foo.c だけだと分かっている場合は、これで十分。
問題は、バグの入ってるファイルが分からない場合。foo.c かもしれないし、bar.c かもしれない。もしかしたら fuga.c かも...。なんて時は、リポジトリ全体の diff を取ってみるのが手早い。ところが、CVS はファイル個別にリビジョン番号を振るので、リポジトリー全体の差分を (リビジョン番号からは) 取れない。
そこで、「時間 (日付)」をキーにして差分を取る (or チェック・アウトする) 方法が活きてくる。
ちなみに、チェック・アウトの時にリポジトリー全体にリビジョン番号を振る方式を「アトミック・コミット」と呼んでいて、darcs や Bazaar といった最近のバージョン管理システムが採用している。
No comments:
Post a Comment