[目次へ][4章へ][4.5へ][4.7へ] 最終更新:$Date: 2002/08/20 16:26:58 $

■第4章 もう少し便利なコマンドの使い方

これはこんなもんのような気がする。(2002/8/13)


■■■4.6 これまでどんな作業をしたか見てみよう(history)

これまでどんな作業をしたか見るには、historyコマンドを利用するとよいです。historyコマンドではリポジトリに対しておこなわれた「全て」の操作について、色々な形式で見ることができます。ただし、管理ファイル$CVSROOT/CVSROOT/historyが用意されていないと使用できません。通常は用意されているはずですが、もしこのファイルがない場合には6章を参考に適切に用意してください。

【図4.6.1】historyコマンドの書式
▼
cvs history [-レポート内容] [-フラグ] [-オプション 引数] [ファイル群...]
▲

オプションは沢山ありすぎるので、ここではいくつか紹介するだけにします。詳しくは付録Cを見てください。ちなみに、オプションなしで実行すると、自分のチェックアウトしたモジュールの一覧が出てくるだけです【図4.6.2】。

【図4.6.2】オプションなしで実行
▼
cvs history
O 2002-08-20 13:23 +0000 mika bintest =bintest= ~/test/cvs-1.11.2/workcopy/*
O 2002-08-20 12:36 +0000 mika cvstest =cvstest= ~/test/cvs-1.11.2/workcopy/*
▲

■■4.6.2 historyコマンドの凝った使い方

-e(everything)オプションを使うと、すべての操作が時系列にそのまま表示されます。ちょっと見てみましょう【図4.6.3】。長いので途中省略しましたが、このような出力がずらずらと出てきます。一行に一つのイベント(おこなわれた操作)が表示されます。まず先頭に、イベントの種類が示されます。次に日付と時刻。その次がユーザ名です。あとは対象モジュールやリビジョンなどの情報になり、操作毎に異なります。

【図4.6.3】-eオプションつきで実行
▼
% cvs history -e
O 2002-08-20 12:36 +0000 mika cvstest            =cvstest=      ~/test/cvs-1.11.2/workcopy/*
O 2002-08-20 12:37 +0000 mika cvstest2           =cvstest2=     ~/test/cvs-1.11.2/workcopy/*
M 2002-08-20 12:44 +0000 mika 1.2                 tmp2.txt     cvstest2  == ~/test/cvs-1.11.2/workcopy/cvstest2
M 2002-08-20 12:44 +0000 mika 1.2                 tmp3.txt     cvstest2/dir1
(中略)
M 2002-08-20 14:20 +0000 mika 1.3                 difftest.txt cvstest2  == ~/test/cvs-1.11.2/workcopy/cvstest2
U 2002-08-20 14:27 +0000 mika 1.3                 difftest.txt cvstest2  == ~/test/cvs-1.11.2/workcopy/cvstest2
F 2002-08-20 15:05 +0000 mika                    =cvstest2= ~/test/cvs-1.11.2/workcopy/*

▲

イベントの種類は11個あり、「TOEFWUCGMAR」のどれか一文字で表されます。【表4.6.1】に各文字に対応するイベントをまとめておきます。

【表4.6.1】
文字	イベント
T	タグ
O	チェックアウト
E	エクスポート
F	リリース
W	更新(ファイル削除)
U	更新(ファイル上書き)
C	更新(マージ、競合あり)
G	更新(マージ、競合なし)
M	コミット(ファイル修正)
A	コミット(ファイル追加)
R	コミット(ファイル削除)

この文字を組み合わせて、-x(extract?)オプションで指定することで、望むイベントだけ表示させることができます。たとえば、【図4.6.4】のようにします。ここでは、U=更新(ファイル上書き)イベントだけを抜き出してみました。他のイベントも同じように抜き出せますし、UOといったように複数文字指定して抜き出すこともできます。いろいろと試してみてください。

【図4.6.4】-xオプションでU=更新(ファイル上書き)イベントだけを見てみる
▼
% cvs history -x U | less
U 2002-08-20 13:14 +0000 mika 1.1     fish.jpg     cvstest            == ~/test/cvs-1.11.2/workcopy/cvstest
U 2002-08-20 13:47 +0000 mika 1.2     tmp3.txt     cvstest2/dir1      == ~/test/cvs-1.11.2/workcopy/cvstest2/dir1
U 2002-08-20 13:47 +0000 mika 1.1.1.1 tmp4.txt     cvstest2/dir1/dir2 == ~/test/cvs-1.11.2/workcopy/cvstest2/dir1/dir2
(後略)
▲

■■4.6.3 WinCvsでhistory

WinCvsには残念ながら、historyを直接呼ぶメニューはありません。ですので、例によってメニュー[管理]→[コマンド入力(C)...]を使用します。

【図4.6.5】 [管理]→[コマンド入力(C)...]メニュー

で、出てきたダイアログに、cvs historyコマンドを打ち込みます。オプション無しだと上手くいかないかもしれないので、-eでもつけてみましょう。えい【図4.6.6】。

【図4.6.6】 コマンド入力ごそごそ

…なんかわらわらとアウトプット領域に出てくるのが結果です【図4.6.7】。

【図4.6.7】-eオプションで実行してみた
▼
cvs history -e 
O 2002-08-20 04:13 +0000 mika wintest         =wintest=             C:\home\mika\workcopy/*
M 2002-08-20 04:17 +0000 mika 1.2 tmp1.txt            wintest         == C:\home\mika\workcopy\wintest
A 2002-08-20 04:24 +0000 mika 1.1 tmp2.txt            wintest         == C:\home\mika\workcopy\wintest
A 2002-08-20 04:27 +0000 mika 1.1 testimage.gif       wintest         == C:\home\mika\workcopy\wintest
R 2002-08-20 04:35 +0000 mika 1.2 tmp2.txt            wintest         == C:\home\mika\workcopy\wintest
A 2002-08-20 04:46 +0000 mika 1.1 test.txt            wintest/newdir  == C:\home\mika\workcopy\wintest\newdir
O 2002-08-20 04:46 +0000 mika wintest         =wintest2=            C:\home\mika\workcopy/*
A 2002-08-20 04:53 +0000 mika 1.1 test2.txt           wintest/newdir2 == C:\home\mika\workcopy\wintest\newdir2
U 2002-08-20 04:54 +0000 mika 1.1 test2.txt           wintest/newdir2 == C:\home\mika\workcopy\wintest2/newdir2
F 2002-08-20 04:58 +0000 mika                 =wintest2=            C:\home\mika\workcopy/*
A 2002-08-20 06:57 +0000 mika 1.1 tagtest.txt         wintest         == C:\home\mika\workcopy\wintest
T 2002-08-20 07:02 +0000 mika wintest/tagtest.txt [TAGTEST2:A]
M 2002-08-20 07:10 +0000 mika 1.2 tagtest.txt         wintest         == C:\home\mika\workcopy\wintest
T 2002-08-20 07:11 +0000 mika wintest/tagtest.txt [TAGTEST2:A]
M 2002-08-20 07:16 +0000 mika 1.3 tagtest.txt         wintest         == C:\home\mika\workcopy\wintest
M 2002-08-20 07:20 +0000 mika 1.4 tagtest.txt         wintest         == C:\home\mika\workcopy\wintest
T 2002-08-20 07:22 +0000 mika wintest/tagtest.txt [TAGTEST2:A]
T 2002-08-20 07:29 +0000 mika wintest/tagtest.txt [TAGTEST2:D]
A 2002-08-20 07:56 +0000 mika 1.1 difftest.txt        wintest         == C:\home\mika\workcopy\wintest
U 2002-08-20 07:58 +0000 mika 1.1 difftest.txt        wintest         == C:\home\mika\workcopy\wintest
M 2002-08-20 07:59 +0000 mika 1.2 difftest.txt        wintest         == C:\home\mika\workcopy\wintest
U 2002-08-20 08:02 +0000 mika 1.2 difftest.txt        wintest         == C:\home\mika\workcopy\wintest
M 2002-08-20 08:03 +0000 mika 1.3 difftest.txt        wintest         == C:\home\mika\workcopy\wintest

*****CVS はコード 0 で終了しました*****
▲

なんか、タグと格闘したあとが見えますね…。このhistoryコマンドはWinCvsでもできますよってくらいですね…。

■■4.6.4 まとめ

●モジュールのチェックアウト状態を見るには

	作業コピー内に入るかリポジトリを指定する
	↓
	cvs history


●全ての作業履歴を見るには

	作業コピー内に入るかリポジトリを指定する
	↓
	cvs history -e


●特定のイベントの履歴を見るには

	作業コピー内に入るかリポジトリを指定する
	↓
	cvs history -x イベント

	イベントの種類
	文字	イベント
	T	タグ
	O	チェックアウト
	E	エクスポート
	F	リリース
	W	更新(ファイル削除)
	U	更新(ファイル上書き)
	C	更新(マージ、競合あり)
	G	更新(マージ、競合なし)
	M	コミット(ファイル修正)
	A	コミット(ファイル追加)
	R	コミット(ファイル削除)