[目次へ][3章本体へ][3.10へ][3.11へ] 最終更新:$Date: 2002/08/20 16:26:59 $

セクション移動。(2002/8/7)


■■3.10 お掃除お掃除(release)

開発チームから外れた、あるいは取って来た作業コピーでの作業をしばらくおこなわない場合などは、その作業コピーを放棄することをお勧めします。これは、CVSの中にゴミ情報を残さないためです。作業コピーを放棄するにはreleaseというコマンドを使います。コマンドの書式は、【図3.10.1】のとおりです。

【図3.10.1】releaseコマンドの書式
▼
cvs release [-d] ディレクトリ群...
▲

他のコマンドに比べると、オプションが少ないですね。1つしかありません。このオプション-dは、deleteの略だと思うのですが、実行時に作業コピーであるディレクトリを削除します。逆にいえば、-dオプションをつけなければ、作業コピーのディレクトリは残ります。残したいファイルがある場合は、-dをつけないようにしましょう。きれいさっぱり削除したい場合は、-dをつけましょう。

■■■3.10.1 ゴミ情報って何?

CVSはユーザがcheckoutや他の動作をしたことを記録しています。簡単にみるためにはhistoryというコマンドを使うといいでしょう。詳しくは第4章で説明しますが、例えば、【図3.10.2】のようなメッセージが出ます。

【図3.10.2】historyコマンドを実行してみる
▼
% 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/*
O 2002-08-20 13:51 +0000 mika cvstest2 =cvstest2=     ~/test/cvs-1.11.2/workcopy/*
O 2002-08-20 13:59 +0000 mika cvstest2 =cvstest2.sub= ~/test/cvs-1.11.2/workcopy/*
▲

【図3.10.2】の行の先頭にある「O」はチェックアウトされているという意味です。他のイベントは-eオプションをつけないと見ることができません。とりあえず、ここではチェックアウトされたかどうか見たいだけなので、これで構いませんね。2つのモジュールがチェックアウトされています。では、ちょっと削除してみましょう。

■■■3.10.2 本当に放棄してしまっていい?

【図3.10.3】何か変更があるね
▼
% cvs release -d cvstest
A test2.txt
You have [1] altered files in this repository.
Are you sure you want to release (and delete) directory `cvstest': n
▲

どうでしょう。このコマンド、特に-dオプションを使うときは慎重に。コミットのし忘れがあったりしたら、大変です。しかし、このあたりはCVSの方でもちゃんと考えてくれています。例えば【図3.10.3】のように、cvstestの方を消そうと思ったら【3行目】、「1つ変更ファイルが残っているよ」というメッセージが表示されました。releaseコマンドは必ず作業コピーディレクトリ内を、コミットされていない変更が残っていないか全部調べてくれます。 そして、何かあれば、メッセージを表示して、削除してよいか尋ねてきます【最終行】。

ここでは、test2.txtが追加(A)されたまま、commitされていないようです。commitしたかったり、ちょっとファイルを取っておきたかったりするのであれば、最後の「Are you sure you want to release (and delete) directory `cvstest':」 (本当にディレクトリcvstestを放棄して(しかも、消しちゃって)いいですか)という質問にn(NOの意味)を入力してキャンセルしてください。

■■■3.10.3 変更をコミットしたら消してもいい?

心残り(commit忘れ)がない場合には削除して構いません。例えば、cvstest2を放棄してみようと試みると、こちらは特にcommit忘れはないようです【図3.10.4】。すべて削除してサッパリしてしまうことにしましょう。最後の質問にy(YESの意味)と答えます。これで作業コピーは本当になくなってしまいました。

【図3.10.4】消しても大丈夫
▼
% cvs release -d cvstest2
You have [0] altered files in this repository.
Are you sure you want to release (and delete) directory `cvstest2': y

% ls -F
cvstest/
▲

ここで、もう一度historyコマンドを実行してみると、このメッセージからも、cvstest2はなくなっていることがわかります【図3.10.5】。

【図3.10.5】チェックアウト情報が消えた
▼
% 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/*
O 2002-08-20 13:59 +0000 mika cvstest2 =cvstest2.sub= ~/test/cvs-1.11.2/workcopy/*

▲

■■■3.10.4 WinCvsでもお掃除

WinCvsでお掃除、もとい作業コピーの放棄(release)をしてみましょう。放棄する対象が必要ですので、前3.8節で使用した、wintest2でも放棄してみることにしましょう。モジュールタブで、wintest2を選んでおいてください【図3.10.6】。

【図3.10.6】 wintest2を放棄しちゃおう

この状態で、メニュー[トレース]→[放棄]【図3.10.7】か、複数ユーザバーの放棄アイコンを選んでください(しかし、このアイコン…cvs-mlでも一時期話題になっていましたが、何の形なんでしょうね?謎のアイコンです)。

【図3.10.7】 [トレース]→[放棄]メニュー

と、【図3.10.8】のようなダイアログが現われ、場所とこのフォルダを削除するかを聞いてきます。削除については、好きにしていただいでいいのですが、残しておくと手作業で消さないといけないので、それが面倒くさい場合(私は大体そうなんですが)には「作業コピーを削除する(R) (-d)」チェックボックスにチェックをつけてから、[OK]ボタンを押します。

【図3.10.8】 なんか聞いてきた

すると、すぐに【図3.10.9】のようなメッセージがアウトプット領域に表示され、同時に【図3.10.10】のようなダイアログが現われます。 【図3.10.9】はreleaseコマンドのチェックと確認メッセージです。アウトプット領域の状態次第では見えにくいかもしれませんが、コミット忘れがないかは確認しておいた方がよいです。といっても、【図3.10.10】が出ている限り、スクロールできなくて不便だったりするのですが…ここはいまいちなところですね。

【図3.10.9】放棄の確認メッセージ
cvs release -d wintest2 (ディレクトリ C:\home\mika\workcopy\ 内)
You have [0] altered files in this repository.
Are you sure you want to release (and delete) directory `wintest2': 


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

なんにしろ、放棄するかどうかを判断して、「はい」か「いいえ」を選んでください。

【図3.10.10】 よければ「はい」を、ちょっと待った!なら「いいえ」を選ぼう

「はい」を選ぶと、【図3.10.11】のようにwintest2がなくなるはずです…が、「最新の状態に更新」しないと、こう見えないことがあります(なんだかなぁ)。

【図3.10.11】 なんとか放棄できたぞ?

■■■3.10.5 まとめ

その作業コピーが必要ない、消去しようと決断したときは、releaseコマンドでその作業コピーを放棄しましょう。

作業コピーtarget_dirの上のディレクトリに移動

cvs release -d target_dir

メッセージにリストアップされたファイルがあればチェックする。
心残りがなければyと答えて削除。
心残りがあれば、nと答えて作業をキャンセルし対処する。
そのあと再度releaseを実行する。