[目次へ][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を実行する。