CVS ( Concurrent Versions System ) は主に、プログラムのソースコードや、テキストで作成された文章などのバージョンを管理するのに適したツールです。特に、多人数で開発する場合などでのバージョン管理には非常に便利です。
CVS をネットワークから使用するためには、いくつかの方法がありますが、このメモでは、pserver という CVS サーバを構築して、アクセスを行います。
このメモは、RedHat Linux 7.2 の環境で作成しました。他の OS でも、少し相異点があるかもしれませんが、同様に設定することは可能です。
一応、間違いがないように努力しているつもりですが、間違いや不明な点などがありましたら、メールで指摘をお願いします。
CVS サーバを構築する環境としては以下のことを想定しています。
tcpserver
を使用cvs
がインストールされている基本的に CVS を使っている人を対象にしています。
CVS pserver のインストールメモ 目次
まず、リポジトリを操作するユーザを作成します。
$ su -c '/usr/sbin/adduser cvs'
次に、/etc/services に cvspserver があるか確認します。
$ grep cvspserver /etc/services cvspserver 2401/tcp # CVS client/server operations cvspserver 2401/udp # CVS client/server operations
上の行がない場合はエディタを使って追加してください。
リポジトリとして使用するディレクトリの /home/cvsroot を作成します。
$ su -c 'mkdir /home/cvsroot' $ su -c 'chown cvs /home/cvsroot' $ su - # su - cvs $ cvs -d /home/cvsroot init
cvspserver
を使用するユーザを準備します。cvs サーバを利用するために作成するアカウントで、UNIX アカウントを持っている必要はありません。アカウントの作成には、/usr/local/apache/bin/htpasswd を使用します。
ユーザを作成する初回時のみ、-c
オプションをつけて下さい。
/home/cvsroot/CVSROOT に passwd というファイルが作成されます。
ユーザを3人追加する時は以下のようにします。
$ cd /home/cvsroot/CVSROOT/ $ su -c '/usr/local/apache/bin/htpasswd -c passwd <ユーザ 1>' $ su -c '/usr/local/apache/bin/htpasswd passwd <ユーザ 2>' $ su -c '/usr/local/apache/bin/htpasswd passwd <ユーザ 3>'
<ユーザ 1,2,3> についてはサーバのユーザとして存在しないアカウントでも大丈夫です(例: anonymous, cvsuser など)
※ htpasswd
は Apache などに含まれています。
作成されたファイルに UNIX 上のユーザを設定します。指定したユーザの権限でアクセスすることになります。
$ su -c 'vi passwd'
<ユーザ1>:xxxxxxx <ユーザ2>:xxxxxxx <ユーザ3>:xxxxxxx
上のように暗号化されたパスワードが入っていますので、後ろに : をつけて、リポジトリを操作するユーザを設定(存在するアカウントを指定)します。
ここでは、全てのユーザが先ほど作成した cvs ユーザでログインすることにします。
別のユーザを指定しても問題はありませんが、ユーザ権限によってはファイルの読み込みや書き込みに失敗する可能性がありますので、気をつけて下さい。
ログインしたユーザが cvs の権限を使用してアクセスする場合、以下のように書き変えます。
[ユーザ1]:xxxxxxx:cvs [ユーザ2]:xxxxxxx:cvs [ユーザ3]:xxxxxxx:cvs
tcpserver
のアクセス制御のルールファイルを作成します。アクセス制御が必要なければ作成する必要はありませんが、安全のため、設定しておいた方が良いと思います。
tcpserver
の使い方については、tcpserver(ucspi-tcp) の使い方についてのメモを書いていますので、そちらも参考にしてください。
$ su -c 'vi /etc/tcp.cvs'
127.:allow 192.168.0.:allow :deny
上のようにアクセス制御用のファイルを作成します(クライアントが 192.168.0.0/24 のネットワークの場合)。
次に、以下のようにして cdb ファイルを作成します。
$ su -c '/usr/local/bin/tcprules /etc/tcp.cvs.cdb /etc/tcp.cvs.tmp < /etc/tcp.cvs'
tcpserver を起動します。
$ /usr/local/bin/tcpserver -HR -l0 -x /etc/tcp.cvs.cdb 0 \ cvspserver /usr/bin/cvs --allow-root=/home/cvsroot pserver &
別のクライアントから cvs サーバにログインしてモジュールを登録、または、チェックアウトできるか確認してください。
$ export CVSROOT=:pserver:<ユーザ1>@192.168.0.1:/home/cvsroot $ cvs login <最初に設定したパスワードを入力> $ cvs import <cvs リポジトリ名> <ベンダー名> <リリースタグ名> $ cvs co <csv リポジトリ名>
※ CVSROOT に指定する値では、サーバ側の --allow-root
で指定している値と全く同じディレクトリを指定してください。特に、最後のスラッシュが違うだけでもエラーになります。
DocBook 形式で書き直し。誤字、脱字の修正。
初版作成。公開。