ノード: Getting Rid Of A Working Copy, 次: , 前: Changing A Log Message After Commit, 上: Advanced CVS



Getting Rid Of A Working Copy

CVS の典型的な使い方では、作業コピーのディレクトリを削除するには、他 のディレクトリツリーと同じように削除します:

     paste$ rm -rf myproj
     

しかしこの方法で作業コピーを削除すると、その作業コピーを使い終わった ことが他の開発者にわかりません。CVS は明示的に作業コピーを放棄するコ マンドを用意しています。リリース(release)はチェックアウトの反対だと 思って下さい。その作業コピーでの作業が終わったことをリポジトリに知ら せます。チェックアウトと同様、リリースはツリーの親ディレクトリで起動 します:

     paste$ pwd
     /home/qsmith/myproj
     paste$ cd ..
     paste$ ls
     myproj
     paste$ cvs release myproj
     You have [0] altered files in this repository.
     Are you sure you want to release directory 'myproj': y
     paste$
     

リポジトリ中に未コミットの変更があった場合リリースは失敗し、変更のあ るファイルの一覧を出力する以外何もしません。そのディレクトリツリーが クリーン(すべて最新)だとするとリリースコマンドはその作業コピーがリリー スされたという記録をリポジトリ中に残します。

リリースコマンドに作業コピーのツリーを自動的に削除させることもできま す。-d フラグを渡して下さい:

     paste$ ls
     myproj
     paste$ cvs release -d myproj
     You have [0] altered files in this repository.
     Are you sure you want to release (and delete) directory 'myproj: y
     paste$ ls
     paste$
     

CVS バージョン 1.10.6 現在、リリースコマンドは作業コピーを調べてリポ ジトリの場所を推定することができません(このコマンドが作業コピーの中 ではなくその上で実行されるものだからです)。-d <REPOS> グ ローバルオプションを渡すか、 CVSROOT 環境変数が正しく設定されている ことを確認するかして下さい。(このバグは将来のバージョンの CVS では解 決されているでしょう)

Cederqvist では、作業コピーを削除する代わりにリリースを使った場合、 リリースされたファイルに監視設定をしている人々には unedit を したかのような通知が行く、と書いてあります。しかしながら筆者が試しに やってみたところ、そうはならないようでした。