DNA Cafe | Download | FreeSoftware | Java | Links
CVS はバージョンコントロールシステムであり、 古いバージョンのファイル(通常はソースコード)を保持し、 誰が、いつ、なぜ変更したか、などをログに記録する。
まずは CVS で使われる用語を簡単に説明する。 これらの言葉は一般的な構成管理でもしばしば使われる。
最初に理解しなければならないのは CVS はすべてのファイルを中央のレポジトリ中で蓄えるということである。
CVS リポジトリはバージョン制御下にあるすべてのファイルとディレクトリの完全なコピーを蓄えている。 通常、リポジトリディレクトリ中のどんなファイルにも直接アクセスはしない。
リポジトリの初期化は CVSROOT のディレクトリといくつかのデフォルトの制御ファイルの追加によっておこわれる。 リポジトリを使用する前に、以下のコマンドを使うか、他の方法でリポジトリを初期化しなければならない。
$ mkdir CVS_root_directory
$ CVSROOT=CVS_root_directory
$ export CVSROOT
$ cvs init
最初に、新しいソースを vendor のリポジトリへ登録する。
$ cd source_distribution_directory
$ cvs import repository vendor_tag release_tag ...
$ cvs tag tag
Explicitly specify a symbolic tag for particular revisions of files in the source repository.
$ cvs rtag -b
-r existing_revision_or_tag
branch_tag
modules
$ cvs admin -n new_branch:old_branch
$ cvs admin -kb file
手間がかかるが、ファイルをリポジトリから完全に削除できる。
$ cd CVS_root_directory
$ cd project/path_to_file
$ rm file
リポジトリからそのファイルを削除する。
リポジトリ上でのファイル名は file,v となっている。
そのファイルがタグを使っているなら CVSROOT/val-tags からその行を削除する。
CVSROOT/history からそのファイルが含まれる行を削除する。
$ cd CVS_root_directory
$ rm -r project
まず最初に理解しなければならないのは CVS はすべてのファイルを中央のレポジトリ中で蓄えるということである。
$ mkdir work_directory
$ cd work_directory
$ cvs checkout -r revision_or_tag modules
$ cvs add directory
$ cvs add file
$ cvs remove -f file
CVS FAQ を読むこと。 なぜなら、ファイル名を変える方法は一つではないから(ってわかってるよな?)。
$ cvs update -d -r revision_or_tag
$ cvs diff [-c]
[-r revision_or_tag [-r revision_or_tag ...]
$ cvs commit
$ cvs release
サーバ側では、ポートの接続要求を受けた時に cvs pserver のコマンドを走らせるように inetd の設定が必要になる。
以下のそれぞれのファイルに行を追加する(既にないか調べること)。
cvspserver 2401/tcp
cvspserver stream tcp nowait root /usr/bin/cvs cvs -f --allow-root=path pserver
cvs: LOCAL
RedHat などで xinetd を使っている場合は inetd.conf の代わりに、 以下のファイルを作成する。
変更後、設定を反映させるために inetd へ SIGHUP シグナルを送る。
次に、パスワードを CVS の passwd ファイルに設定する。 ファイルは `$CVSROOT/CVSROOT/passwd' である。 以下に例を示す。
anonymous:
daisuke:tGX1fS8sun6rY
someone:1sOp854gDF3DY:pubcvs
`passwd' ファイルは直に作成や修正をする。 これは `passwd' ファイルがチェックアウトした作業用コピーに含まれるとセキュリティ上危険だから。
(パスワードファイルを作る簡単なプログラム → cvspasswd.tar.gz)
続いて設定ファイルを更新するために CVSROOT をチェックアウトして修正する。
$ cvs checkout CVSROOT
SystemAuth=no
anonymous
daisuke
someone
daisuke
someone
最後にコミットして終了。
$ cvs commit
CVS は リモートシェル経由で使うこともできる。 この場合、ユーザー認証は通常のリモートシェルの認証と同じやり方になる。
サーバ側では、リポジトリにアクセスするユーザーのアカウントを作る。 cvs をグループに追加し、ユーザーをこのグループに含める。
またユーザーにシェルでのアクセス権を与えたくない場合には rssh を使うとよい。
$ groupadd -g 1234 cvs
$ useradd -s /usr/local/bin/rssh user
$ vigr
例えばグループは以下のようになる。
cvs:*:1234:user
さらにグループ cvs に対してリポジトリのグループ所有権とアクセス権を与える。
$ cd CVS_root_directory
$ chgrp -R cvs .
$ chmod ug+rwx . CVSROOT
クライアント側では以下のように二つの環境変数を指定してアクセスする。
$ CVS_RSH=ssh
$ CVSROOT=:ext:user@host:path
$ export CVS_RSH CVSROOT
$ cvs command