cvs で管理される資源の格納場所 (御本尊) はリポジトリと呼ばれる。 リポジトリの作成作業は最初に 1 回だけ行えば良く、編集・更新 作業は後述の「通常の編集作業」に記述されたことを行えば良い。
開発者はこのリポジトリ内で「プロジェクト (モジュールとも呼ぶ)」 を開始し、各プロジェクト単位で開発を行なう。 プロジェクトの開始については cvs でプロジェクトを始める を参照して欲しい。
cvs リポジトリ内にはプロジェクトと同じ名前のディレクトリが 作成され、その中に RCS ファイルを置いてファイルのバージョンを管理する。 ファイルを編集または参照したいユーザが cvs checkout コマンドで 要求すると、そこからカレントプロジェクトに 作業用コピー*1が作られ、 適宜 cvs commit コマンドでリポジトリ内の RCS ファイルに履歴を 蓄積させてゆく。
従って、まずは何はともあれリポジトリを作らなければいけない。 また電脳サーバでは原則的にグループユーザ単位での開発をおこなうため、 リポジトリもそれに適したものでなければいけない。 既にリポジトリが存在してそれを利用する場合でも電脳リポジトリポリシー とグループ書き込み許可の設定は参照して欲しい。
以下は、電脳サーバにおけるリポジトリの一般的ルールである。 詳しくは各プロジェクト毎に詳細を決めると良い。
ここでは, CVS リポジトリは www.gfd-dennou.org の /GFD_Dennou_Club/ftp/arch/hoge/cvsroot に作成することとする. そのためにはまず www.gfd-dennou.org へログインする.
$ ssh www.gfd-dennou.org
ログインしたら /GFD_Dennou_Club/ftp/arch/hoge/ まで移動する.
$ cd /GFD_Dennou_Club/ftp/arch/hoge/
ここで cvs コマンドを実行すれば cvsroot を作成可能であるが, グループでの開発であることを考え, 作成するファイルのグループが hoge となるように, そしてグループに書き込み権限を与えるように グループと環境変数を変更する.
$ sg hoge $ umask 002
現在のグループは id コマンドで, umask は umask コマンドで知ることが できる. 準備が出来たら以下のコマンドを実行する.
$ cvs -d /GFD_Dennou_Club/ftp/arch/hoge/cvsroot init
これで cvsroot ディレクトリが作成されたはずである.
上記で umask などの設定をおこなったものの, s ビットを立てるなど, パーミッションの設定が必要となる. また cvs init コマンドで 作成したディレクトリやファイルの中にはグループ書き込み権限が 無いものもあるので, 以下で設定する.
cvsroot 以下で作成されるファイル, ディレクトリのグループを hoge にするため, cvsroot に s ビットを立て, 書き込み権限を 与える. 念のためにグループも hoge に設定する.
$ chmod g+s cvsroot $ chmod g+w cvsroot $ chgrp hoge cvsroot
cvsroot が作成されれば, そのリポジトリに関する CVS の動作を 制御する CVSROOT ディレクトリも作成されているはずである.
このディレクトリ, およびそれ以下の特定のファイルに関して グループの変更と書き込み権限変更をおこなう.
グループを hoge とし, グループに書き込み権限を与える. (これは少しアンセキュアな方針かもしれない. よりセキュアな 方法として, 代表的な管理者 1 人にのみ書き込み権限を与える という方針もあり得るだろう).
$ cd cvsroot $ chgrp hoge CVSROOT $ chmod g+s CVSROOT $ chmod g+w CVSROOT
CVSROOT 以下にある history, val-tags にグループ書き込み権限 を与える. (グループは既に hoge であると仮定している).
なお, history とはこのリポジトリ以下のプロジェクトに対して 行なわれた checkout, commit, rtag, update, release を記録 しているファイルである. cvs history コマンドで見ることが出来る. (動作の詳細は cvs history -x コマンドを参照のこと). ここではグループ hoge で開発することを念頭に置くため, グループに書き込み権限を与えておく.
$ cd CVSROOT $ chmod g+w history
val-tags は検索を高速化するために, 有効なタグ名をキャッシュ しているファイルである. HOGE プロジェクトではタグも使用するので, これにもグループ書き込み権限を与える.
$ chmod g+w val-tags
良く分からず. rm -rf かな?
*1プロジェクトに変更を加える際に編集するコピー。
1つのプロジェクトに対する作業用コピーが複数あることもあり得る。
通常は各開発者毎に1つづつ独自のコピーを持つ。