CVS PSERVER の設定と利用

注意:[cvs-ml 120..123][cvs-ml 746..753]
Turbo Linux 6.0/6.1 にインストールされている cvs-1.10.6 には
pserver が動かない不都合があるようです。

[login aborted]: recv() from server xxxxx:EOF
上記のようなエラーが出る場合にはパッチ([cvs-ml 123])の当っている
1.10.6 または1.10.7 以上をインストールしてください。
Vine Linux 2.0 の cvs-1.10.6 にはパッチが当たっているので
大丈夫とのことです。

PSERVER を使うと、同じソースコードを
UNIX, Mac, Windows などで共有しながら開発ができます。
samba でもいいのですが、改行コードが自動的に変換されるのが利点です。
漢字コードの自動変換についてはサーバとクライアントの双方に
knjrwp パッチを当てることで、実現されています(筆者は未検証)。
詳しくは cvs-ml の情報を参照してください。

私はファイルの漢字コードは SJIS で統一(日本語化 WinCVS)
commit でのコメントは英語で書く、といった方法で逃げています。


ここではマシン名 foo を PSERVER にしてみます。
また、/home/group/CVS の下に CVSROOT があるとします。
foo の root になって、下記の2つのファイルを修正します。

/etc/services :
cvspserver 2401/tcp

/etc/inetd.conf :
cvspserver stream tcp nowait root /usr/local/bin/cvs cvs --allow-root=/home/group/CVS pserver
この設定を有効にするためのコマンドを root で実行します。

% kill -HUP [inetd のプロセス番号]
これで設定は終わり。UNIX のログイン名とパスワードで CVS PSERVER にログインできます。

このままではちょっと恐いので、CVSROOT/config に SystemAuth=no と書いて、
CVSROOT/passwd に新たにログイン名とパスワードを追加すれば、
UNIX とは独立に CVS のユーザ管理ができます(詳細は info 参照)。


余談ですが、CVSROOT ディレクトリの中身は直接書き換えないで、
% cvs co CVSROOT 
(書き換え) 
% cvs ci
するのがよいようです。


では、他の UNIX マシンからこのサーバの test-cvs を取り出してみましょう。

% cvs -d :pserver:nishi@foo:/home/group/CVS login
(Logging in to nishi@foo)
CVS password: 

% cvs -d :pserver:nishi@foo:/home/group/CVS co test-cvs
これでチェックアウトができました。

どのサーバに login しているかはホームディレクトリの .cvspass ファイルに記録されます。
サーバへの接続を終わらせるときには cvs logout します。
これにより .cvspass に書かれたサーバへの接続を終了します。

特にダイアルアップで pserver に接続するときには、回線を切る前に logout するべきです。
うっかり logout せずに回線を切って cvs diff とかやるとハングします(たぶん)。

ちなみに WinCVS には「一定時間が経過したら自動的に cvs logout する」という 設定があります。


CVSROOT を環境変数で指定する

毎回 -d xxxx オプションを指定するかわりに環境変数で指定できます。
tcsh の場合:
$ setenv CVSROOT :pserver:nishi@foo.co.jp:/home/group/CVS

bash の場合:
$ CVSROOT=:pserver:nishi@foo.co.jp:/home/group/CVS
$ export CVSROOT
WinCVS では [Admin / Preferences] または [管理 / 設定] (Ctrl-F1) で指定します。
:pserver: は省略し、Authentication で

["passwd" file on the cvs server]

を選びます。

次は、これを WinCVS から取り出してみましょう。。(続く)


Takuya NISHIMOTO
Last modified: 2009-09-05