ノード:History -- A Summary Of Repository Activity, 次:Annotations -- A Detailed View Of Project Activity, 前:Getting Rid Of A Working Copy, 上:Advanced CVS
まずはリポジトリ中でログが記録できるようになっていることを確認します。
リポジトリ管理者は最初に history ファイルが存在することを確かめなく
てはなりません:
floss$ cd /usr/local/newrepos/CVSROOT floss$ ls -l history ls: history: No such file or directory floss$
ない場合には次のように作成して下さい:
floss$ touch history floss$ ls -l history -rw-r--r-- 1 jrandom cvs 0 Jul 22 14:57 history floss$
この history ファイルはリポジトリを使用する人全員が書き込めるように
なっていなければなりません。そうしないとそのファイルを変更する CVS
コマンドを実行するたびにエラーが起きるようになってしまいます。ワール
ドライタブルにするのが一番簡単でしょう:
floss$ chmod a+rw history floss$ ls -l history -rw-rw-rw- 1 jrandom cvs 0 Jul 22 14:57 history floss$
リポジトリが cvs init
により作成されたのであれば history
ファイルは既に存在しているはずですが、パーミッションの問題は解決する
必要があるかもしれません。
以降の例では、しばらくの間 hisotry ログ記録がされていたと仮定します。 history ファイルにデータが蓄積されるだけの時間がたっています。(?)
cvs history の出力は少々ぶっきらぼうです(これは多分、人間が読むため
というよりはプログラムが解釈するためにこうなっているのでしょうけれど、
ちょっと勉強すれば読めます)。とりあえず走らせてみて出力を見てみましょ
う:
paste$ pwd /home/qsmith/myproj paste$ cvs history -e -a O 07/25 15:14 +0000 qsmith myproj =mp= ~/* M 07/25 15:16 +0000 qsmith 1.14 hello.c myproj == ~/mp U 07/25 15:21 +0000 qsmith 1.14 README.txt myproj == ~/mp G 07/25 15:21 +0000 qsmith 1.15 hello.c myproj == ~/mp A 07/25 15:22 +0000 qsmith 1.1 goodbye.c myproj == ~/mp M 07/25 15:23 +0000 qsmith 1.16 hello.c myproj == ~/mp M 07/25 15:26 +0000 qsmith 1.17 hello.c myproj == ~/mp U 07/25 15:29 +0000 qsmith 1.2 goodbye.c myproj == ~/mp G 07/25 15:29 +0000 qsmith 1.18 hello.c myproj == ~/mp M 07/25 15:30 +0000 qsmith 1.19 hello.c myproj == ~/mp O 07/23 03:45 +0000 jrandom myproj =myproj= ~/src/* F 07/23 03:48 +0000 jrandom =myproj= ~/src/* F 07/23 04:06 +0000 jrandom =myproj= ~/src/* M 07/25 15:12 +0000 jrandom 1.13 README.txt myproj == ~/src/myproj U 07/25 15:17 +0000 jrandom 1.14 hello.c myproj == ~/src/myproj M 07/25 15:18 +0000 jrandom 1.14 README.txt myproj == ~/src/myproj M 07/25 15:18 +0000 jrandom 1.15 hello.c myproj == ~/src/myproj U 07/25 15:23 +0000 jrandom 1.1 goodbye.c myproj == ~/src/myproj U 07/25 15:23 +0000 jrandom 1.16 hello.c myproj == ~/src/myproj U 07/25 15:26 +0000 jrandom 1.1 goodbye.c myproj == ~/src/myproj G 07/25 15:26 +0000 jrandom 1.17 hello.c myproj == ~/src/myproj M 07/25 15:27 +0000 jrandom 1.18 hello.c myproj == ~/src/myproj C 07/25 15:30 +0000 jrandom 1.19 hello.c myproj == ~/src/myproj M 07/25 15:31 +0000 jrandom 1.20 hello.c myproj == ~/src/myproj M 07/25 16:29 +0000 jrandom 1.3 whatever.c myproj/a-subdir == ~/src/myproj paste$
There, isn't that clear?
出力を調べる前に、起動時のオプション(-e と -a)に注意して下さい。 history を実行するときには大抵、どのデータをどのように表示するか指定 するオプションをつけると思います。この点においてこのコマンドは他の CVS のコマンドとは違います。他のコマンドは普通、オプション無しでも役 に立ちます。この例の2つのフラグはそれぞれ、everything (起こったイベン トの全種類を表示) と all (全てのユーザについて) という意味です。
history コマンドが他のコマンドと違う点は他にもあって、普通このコマン
ドは作業コピー内で実行しますが、コマンド出力はその作業コピーのプロジェ
クトの情報に限定されません。リポジトリ内の全てのプロジェクトの全ての
イベント履歴を表示します。作業コピーは履歴データをどのリポジトリから
取ってくればよいかを CVS に指定するために使われるだけです。(上の例で
はリポジトリの履歴データは myproj
プロジェクトのものしかない
ので、これで全てなのです)
出力の形式は通常このようです:
CODE DATE USER [REVISION] [FILE] PATH_IN_REPOSITORY ACTUAL_WORKING_COPY_NAME
コード文字は CVS のさまざまなオペレーションを指します Table 6.1 を参 照してください。
オペレーション(チェックアウトのような)は各ファイルではなくプロジェク ト全体についてのもので、リビジョンやファイル名は省略されています。イ コール記号の間にリポジトリ内パスが書いてあります。
history コマンドの出力はコンパクトなように、他のプログラムが解釈し易
いようにデザインされていますが、CVS still gives you a lot of control
over its scope and content. Table 6.2 にあるオプションで、どんなタイ
プのイベントを報告して欲しいかコントロールします。
Table 6.1 コード文字の意味 Letter Meaning ====== ========================================================= O チェックアウト T タグ F リリース W アップデート(ユーザファイルがない、エントリファイルから削除) U アップデート(変更されていないユーザファイルを上書き) G アップデート(変更されたユーザファイルにマージ、成功) C アップデート(変更されたユーザファイルにマージ、コンフリクト) M コミット(ファイル変更) A コミット(ファイル追加) R コミット(ファイル削除) E エクスポート
Table 6.2 イベントタイプでフィルタリングするオプション Option Meaning ========== ========================================================= -m MODULE MODULE に起こった履歴イベントを表示 -c コミットイベントを表示 -o チェックアウトイベントを表示 -T タグイベントを表示 -x CODE(S) CODE タイプのイベントを全て表示(OTFWUGCMARE から1つ以上) -e 全タイプのイベント表示。以上。レポートして欲しいイベン トのタイプを選択したあと、Table 6.3 に示したオプション でさらにフィルタリングすることもできます。
Table 6.3 ユーザでフィルタリングするオプション Option Meaning ========== ========================================================= -a 全ユーザのアクションを表示 -w この作業コピー内のアクションのみ表示 -l ユーザが取ったそのアクションの最後の日付を表示 -u USER USER の記録を表示