ノード:Starting A Repository, 次:The Password-Authenticating Server, 前:Anatomy Of A CVS Distribution, 上:Repository Administration
CVS の実行ファイルがシステムにインストールできたら、まずは
An Overview of CVS に従って、リモートリポジトリにアクセスするク
ライアントとして使ってみましょう。しかし、自分のマシンからリビジョンを
提供したいのであれば、そこにリポジトリをつくらねばなりません。それを実
現するコマンドは以下のとおり、
floss$ cvs -d /usr/local/newrepos init
/usr/local/newrepos
はリポジトリになって欲しいディレクトリへの
パスです(当然そこへ書込める権限がなければなりません、コマンドを root
権限で実行しても構いません)。init サブコマンドの後ではなく、前に新しい
リポジトリの場所を指定するのは直感に反するような気がするかもしれません
が、-d オプションの使い方に関して言えば、他の CVS コマンドと一貫してい
ます。
このコマンドを走らせると、黙って終わります。新しいディレクトリを調べて
みましょう:
floss$ ls -ld /usr/local/newrepos drwxrwxr-x 3 root root 1024 Jun 19 17:59 /usr/local/newrepos/ floss$ cd /usr/local/newrepos floss$ ls CVSROOT floss$ cd CVSROOT floss$ ls checkoutlist config,v history notify taginfo,v checkoutlist,v cvswrappers loginfo notify,v verifymsg commitinfo cvswrappers,v loginfo,v rcsinfo verifymsg,v commitinfo,v editinfo modules rcsinfo,v config editinfo,v modules,v taginfo floss$
新しいディレクトリにはサブディレクトリがひとつだけあり(CVSROOT/)、CVS
の動作をコントロールするいろいろな管理ファイルがおさまっています。今後、
これらのファイルをひとつひとつ見ていく予定です。今のところはリポジトリ
がちゃんと動くことが目標です。ここで「ちゃんと動く」とは、ユーザがプロ
ジェクトをインポート、チェックアウト、アップデート、コミットできるとい
う意味です。
An Overview of CVS で述べた CVSROOT 環境変数と、リポジトリの中に
あるこの CVSROOT サブディレクトリを混同しないように。全然関係ないです。
不運にも偶然一致してしまい、同じ名前がついているだけです。前者は、CVS
を使うときにいちいち -d <repository-location>
とタイプする
のがイヤなユーザ向けのもので、後者はリポジトリの管理用サブディレクトリ
です。
リポジトリが作成できたら、そのパーミッションに注意して下さい。CVS は特 別な統一されたパーミッションやファイルの所有権の計画(?)は要求しません。 リポジトリへ書き込める権限が必要なだけです。しかし、一部セキュリティー 上の理由ですがどちらかというと主に管理者のまっとうな分別として、次の手 順を踏むことを強く推奨します。
cvs
というグループを追加し、リポジトリにアクセスする
必要のあるユーザはそのグループに加えます。例として筆者のマシンの
/etc/group
ファイルの関連する行をお見せしましょう:
cvs:*:105:kfogel,sussman,jimb,noel,lefty,fitz,craig,anonymous,jrandom
floss$ cd /usr/local/newrepos floss$ chgrp -R cvs . floss$ chmod ug+rwx . CVSROOT
これで、グループにいるユーザは誰でも cvs import
を実行すれ
ば(このへんのことは An Overview of CVS に説明があります)プロジェ
クトを始めることができるようになりました。checkout, update, commit も
同様に動きます。リポジトリマシンに rsh または sh アクセスができるなら、
:ext:
を使ってリモートからアクセスすることもできます。(
上の例の chgrp と chmod コマンドだと、誰だかもわからない anonymous
ユーザに書込み権限を与えてしまうことにお気づきでしょうか。こうしている
理由は、リポジトリを読むだけの anonymous ユーザであろうとも、CVS プロ
セスがリポジトリ内に一時ロックファイルを作れるようにしておかなければな
らないので、システムレベルでの書込み権限が必要だからなのです。CVS は
read-only 制限を実現するのに Unix ファイルシステムの権限は使っておらず、
別の方法を使っているのです。これについては Anonymous Access で述
べます。)
コントリビュータがリポジトリマシン上のアカウントを持つ必要がないような プロジェクトを一般に公開するリポジトリの場合は、パスワード認証サーバを 設定するべきです(see The Password-Authenticating Server)。これは匿 名の読み出し専用アクセスに必要ですし、マシンのフルアカウントを与えるこ となしに特定の人々にコミットアクセスを許可する一番簡単な方法でもありま す。