Title: cvs 管理用ディレクトリ CVSROOT の編集


    Contents


cvs にて commit するとメールで知らせるようにする設定バイナリファイルを安全に登録するためにeuc コードのファイルのみリポジトリ管理させるにはコミットメッセージを euc コードのみにするには などの cvs リポジトリ自体の動作設定を行なうためには、 リポジトリ以下の CVSROOT 内のファイルを編集する必要がある。 これは直接編集することも可能だが、checkout と commit によって編集するのがお作法である。

1 CVSROOT のチェックアウト

チェックアウトの方法はその他のプロジェクトと同様である。 ここではリポジトリがホスト www.gfd-dennou.org の /GFD_Dennou_Club/ftp/arch/hoge/cvsrootにあると仮定する。

$ export CVSROOT=:ext:www.gfd-dennou.org:/GFD_Dennou_Club/ftp/arch/hoge/cvsroot
$ export CVS_RSH=ssh
$ cd <適当なディレクトリ>
$ cvs checkout CVSROOT

すると、CVSROOT ディレクトリが展開される。

更新や編集の登録は普通にプロジェクトで行なうのと同様なので、 cvs の使い方 -- 最低限編cvs の使い方 -- 便利編を 参照せよ。ただし、大きく異なる点は以下のcheckoutlistである。 これは特に、CVSROOT 内に新たにファイルを追加する場合には重要である。

2 checkoutlist

一旦 CVSROOT 内を見るため、CVSROOT のある場所まで移動し、 中身を眺めてみよう。

$ ssh www.gfd-dennou.org
$ cd /GFD_Dennou_Club/ftp/arch/hoge/cvsroot 
$ ls -l CVSROOT

Emptydir/       cvsform.pl,v   loginfo,v  taginfo
checkoutlist    cvswrappers    modules    taginfo,v
checkoutlist,v  cvswrappers,v  modules,v  val-tags
commitinfo      editinfo       notify     verifymsg
commitinfo,v    editinfo,v     notify,v   verifymsg,v
config          history        rcsinfo
config,v        loginfo        rcsinfo,v

このようにファイルの作業用コピーが RCS リビジョン (****,v) ファイルと並んで含まれているのが分かる。CVSROOT という管理ディレクトリの 特殊機能として、RCS リビジョンを cvs コマンドによって更新すると 作業用コピーもアップデートされるようになっているのである。

明示的に表しているのが、CVSROOT 内に commit した際のメッセージである。 commit してみると以下のメッセージが表示されるのが分かるだろう。

cvs server: Rebuilding administrative file database

2.1 新たなファイルを追加するには?

ファイルの追加自体は add と commit オプションを用いれば良く、 cvs の使い方 -- 最低限編を 参照すれば良い。

ただしその後に checkoutlist にそのファイルに関する記述を 加える必要がある。例えば、cvscheck.pl というファイルを CVSROOT に加えようとする場合、cvscheck.pl 自体の add と commit を終えたら、 checkoutlist に以下の一行を加える。

cvscheck.pl        unable to check out / update cvscheck.pl in CVSROOT

行頭はファイル名、空白を挟んだ後半がチェックアウトできない場合に 表示されるエラーメッセージである。編集が終ったら commit する。

$ cvs ci -m "Add cvscheck.pl" checkoutlist

こうすることで、commit が完了されると共に、メッセージ

cvs server: Rebuilding administrative file database

が表示され、CVSROOT 以下のファイルがリビルドされ、 cvscheck.pl,v から cvscheck.pl が作成される。今後, cvscheck.pl を commit する毎に、CVSROOT 以下の cvscheck.pl も更新される。

3 動作不良の際の対応

CVSROOT 以下は cvs リポジトリ内のプロジェクトにおける checkout、 commit、add などなどの全ての動作を司る。そのため、うっかり CVSROOT 以下のファイルの編集を失敗すると cvs の動作が正常に行なわれなくなる 可能性がある。(これは CVSROOT 自体の編集のための動作も例外ではない)。

万が一編集などの動作が cvs 越しには不可能になった場合、CVSROOT 以下を 直接編集して CVSROOT 内の設定を修正する。そうすることで次に CVSROOT 内のファイルがリビルドされるまでは動作が回復するはずである。 もちろん、動作が回復した場合は真っ先に、動作不良の原因であった ファイルを編集すべきである。