Concurrent Versions System

提供: ArchWiki
移動先: 案内検索

Concurrent Versions System はバージョン管理システムで、ソース構成管理 (SCM) の重要なコンポーネントです。CVS を使うことで、ソースファイルやドキュメントの履歴を記録することができます。フリーソフトウェアの RCS, PRCS, Aegis パッケージなどと同じ役割を満たします。このガイドでは CVS サーバーをセットアップする方法を説明します。

インストール

cvsxinetd をインストールしてください。

cvs グループを作成します。グループのメンバーがリポジトリに書き込む権限を持ちます:

# groupadd cvs

cvs グループに cvs ユーザーを作成してください (-md でホームディレクトリが作成されます):

# useradd -md /home/cvsroot -g cvs -p Insecure0 cvs

初期化

CVS リポジトリ (cvs) を初期化:

cvs% cvs -d /home/cvsroot init

ディレクトリのパーミッションは 2775 (drwxrwxr-x) である必要があります。異なっている場合、(cvs ユーザーで) 以下を実行:

cvs% chmod 2775 /home/cvsroot

リポジトリにローカルからアクセスできるユーザーを cvs グループに追加してください。既存のユーザーを cvs グループに追加するには:

# gpasswd -a username cvs

xinetd の設定ファイルを作成:

/etc/xinetd.d/cvspserver
service cvspserver
{
        port            = 2401
        socket_type     = stream
        protocol        = tcp
        wait            = no
        user            = root
        passenv         = /home/cvsroot
        server          = /usr/bin/cvs
        server_args     = -f --allow-root=/home/cvsroot pserver
}

/etc/services に以下の行が書かれていることを確認 (存在しない場合は追加してください):

cvspserver 2401/tcp

HOME 変数の定義を解除:

# unset HOME

そして xinetd.service再起動してください。

設定

cvs ユーザーになってから ("su cvs")、~/CVSROOTpasswd ファイルを作成してください。(apache パッケージに含まれている) htpasswd コマンドを使うことでファイルにエントリを追加できます:

htpasswd -b filename username password

それからファイルを編集して以下のようにグループを追加してください:

# Format is username:password:group

anonymous::
luser:HopefullySecure0:cvs
other:Insecure0:cvs

~/CVSROOTwriters ファイルを作成して、passwd で作成したユーザーに書き込み権限を与えます:

luser
other

~/CVSROOTreaders ファイルを作成して、passwd で作成したユーザーに読み込み権限を与えます:

anonymous
ノート: readers ファイルに記述したユーザーは書き込み権限を持つことができません。

使用

以下のコマンドを使ってサーバーをテストできます:

export CVSROOT=:pserver:my_user_name@127.0.0.1:/home/cvsroot
cvs login
mkdir ~/sandbox
mkdir ~/sandbox/myproject
cd ~/sandbox/myproject
echo "this is a sample file" > myfile
cvs import -m "description of myproject" myproject v1 r1
cd ..
rm -R myproject
cvs checkout myproject
cd myproject
echo "some changes to the file" >> myfile
cvs commit -m "Explain changes here" myfile