Node: Starting A Repository, Next: , Previous: Anatomy Of A CVS Distribution, Up: Repository Administration



Starting A Repository

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 は特 別な統一されたパーミッションやファイルの所有権の計画(?)は要求しません。 リポジトリへ書き込める権限が必要なだけです。しかし、一部セキュリティー 上の理由ですがどちらかというと主に管理者のまっとうな分別として、次の手 順を踏むことを強く推奨します。

  1. システムに cvs というグループを追加し、リポジトリにアクセスする 必要のあるユーザはそのグループに加えます。例として筆者のマシンの /etc/group ファイルの関連する行をお見せしましょう:
              cvs:*:105:kfogel,sussman,jimb,noel,lefty,fitz,craig,anonymous,jrandom
              
  2. リポジトリのオーナグループとグループパーミッションを変えて、そのグルー プを反映するようにします:
              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)。これは匿 名の読み出し専用アクセスに必要ですし、マシンのフルアカウントを与えるこ となしに特定の人々にコミットアクセスを許可する一番簡単な方法でもありま す。