CVSをLinuxに
特に明記されていない箇所の作業は一般ユーザ(今回はユーザ名cvs)で行った。
root権限が必要な作業はその都度明記。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
検証環境
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Red Hat Linux v9 (/usr/bin/cvs すでにあり)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
サーバ側のディレクトリ構造(目指すところ)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
% export CVSROOT=/cvs/repository/framework
(一般例) /cvs/ +-- /repository/framework +-- /CVSROOT/ ← cvs initによって作られる +-- /モジュール(1)/ ← importによって追加 +-- /src/ (例) +-- /docs/ (例) +-- /モジュール(2)/
(今回) /cvs/ +-- /repository/framework +-- /CVSROOT/ ← cvs initによって作られる +-- /build/projects/ ← importによって追加 +-- /単位1/ +-- /単位2/ +-- /単位3/
(注)"CVSROOT"というのが二つあって紛らわしい
(a) 環境変数CVSROOT
% export CVSROOT=/cvs/repository
とすると、モジュールはこの/cvs/repository 以下に追加される
(b) ディレクトリCVSROOT
cvs initによって作成される。
CVSメタ情報が格納されている。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
サーバ側設定 (1) cvs init
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
(1) ディレクトリ作成+所有・パーミッション設定
[root@MACHINE_NAME /]$ mkdir /cvs
[root@MACHINE_NAME /]$ chgrp cvs cvs
(注)cvsグループがない場合は作る
[root@MACHINE_NAME /]$ chmod 775 cvs
[cvs@MACHINE_NAME cvs]$ mkdir repository/framework
(2) cvs init
[cvs@MACHINE_NAME cvs]$ export CVSROOT=/cvs/repository/framework
[cvs@MACHINE_NAME cvs]$ cvs init
確認
/cvs/repository/framework/CVSROOT
ができていることを確認する。
できていない場合は
[cvs@MACHINE_NAME cvs]$ env | grep CVSROOT
で環境変数CVSROOTが正しく設定されているかどうか確認
(3) パーミッション設定
[root@MACHINE_NAME framework]$ chmod g+w CVSROOT
[root@MACHINE_NAME framework]$ chmod g+s CVSROOT
(メモ)↑のchmod 775 cvs のため、(3)を行う前にすでにCVSROOTは775になっているはず。
□ モジュールのモードもこの設定である必要あり。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
サーバ側設定 (2) xinetd
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
(注)「サーバ側設定(2)」はrootで作業
(1) xinetdの設定
> /etc/xinetd.d にファイル cvspserver を作成。内容は↓。
service cvspserver
{
socket_type = stream
protocol = tcp
wait = no
user = root
passenv =
server = /usr/bin/cvs
server_args = --allow-root= /cvs/repository/framework pserver -f
server_args = --allow-root=/cvs/repository/framework pserver -f
}
- 取り消し線で消した箇所、間違えていました。"="のあとにスペースがあってはうまくいきません。正しくは、"="のあとすぐにリポジトリを指定します。
(メモ)複数のリポジトリを使う場合は server_args を↓のようにする
server_args = --allow-root=/home/pauljohn/cvsroot --allow-root=/home/pauljohn/cvsmisc pserver -f
出典)http://www.xinetd.org/faq.html#cvss
(2) services ファイルの編集
・今回/etc/services は触らず
既にcvspserverのエントリ(tcp, udpの合計2件)あることを確認したので触らない。
> cvspserver 2401/tcp #CVS client/server operations
> cvspserver 2401/udp #CVS client/server operations
(3) xinetdの再起動
> /etc/rc.d/init.d/xinetd restart
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
サーバ側設定 (3) cvsuser作成
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
(注)cvsユーザの作成には2種類ある。
1) OSユーザをCVSユーザとする方法
2) CVSメタ情報にCVSユーザ情報を登録する方法 ← 今回採用
より詳しくは↓
http://web.sfc.keio.ac.jp/~s95898ym/comp/cvs-pserver.html
今回の方針:
CVSメタ情報にCVSユーザを定義し、これらのCVSユーザは
OSユーザcvsの権限でcvs機能を実行する。
また、cvs機能はcvsグループに解放しておくので、cvsグループにさえ
所属していれば、OSユーザもcvs使える。
(1) CVSROOT/にpasswdファイルを作る
(2) CVSROOT/にpasswdファイルを編集
[cvs@MACHINE_NAME CVSROOT]# htpasswd -nb cvs_test_user cvs_test_user >> passwd
passwd中身はこんな感じ ↓
> cvs_test_user:暗号化されたパスワード
末尾にコロン追加
> cvs_test_user:暗号化されたパスワード:cvs
passwdファイルのコロン区切りの意味
①:②:③
①・・・ ユーザ名
②・・・ 暗号化されたパスワード
③・・・ どのOSユーザとしてcvs 機能を実行するか
この手順で必要ユーザ追加していく
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
モジュールのインポート
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
「インポート」というのは、バージョン管理関係のファイルが
何一つ入っていない普通のディレクトリ構造を、レポジトリに転送することです。
ただのコピーとは違って、CVSのためのいろいろな情報を記したファイルが作成されます。
1. 環境変数が↓のようになっていること確認
CVSROOT=/cvs/repository/framework
2. import
(今回は/cvs/work以下のディレクトリをリポジトリに登録する)
(今回のディレクトリ構造) /cvs/ +-- /repository/framework +-- /CVSROOT/ ← cvs initによって作られる +-- /build/projects/ ← importによって追加 +-- /単位1/ +-- /単位2/ +-- /単位3/ /cvs/work/build/projects/単位1, 単位2
/cvs/work/build/ に移動し
cvs import -m -n "build" avendor start
参考URL:
http://www.netbeans.jp/support_mycvs2.htm
・・・ import の引数などの説明
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
クライアントの作業(1) 接続確認
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
(方法1) コマンドラインから
→ ログインできた。
> % cvs -d :pserver:cvs_test_user@161.93.85.114:/cvs/repository/framework login
> CVS password:
(方法2) WSADから
→ ログインできた。
[手順]
1. ウィンドウ > パースペクティブを開く > CVSリポジトリーエクスプローラー
2. 開いた「CVSリポジトリーエクスプローラー」上で
右クリック > 新規 > リポジトリーロケーション
3. 下記を入力
ホスト: 161.93.85.114
リポジトリーパス: /cvs/repository/framework
ユーザ名・パスワード: 適切な値
接続型: pserver
デフォルトポート使用
終了時の接続の妥当性検査にチェック(デフォルト)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
クライアントの作業(2) モジュールのチェックアウト
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
[用語]
「チェックアウト」・・・
CVSサーバにあるリポジトリの内容をローカルにコピーして作業用コピーとすること
[手順] WSADのCVSクライアントを使う場合
「CVSリポジトリーエクスプローラー」でターゲットの
モジュールを選択 > 右クリック > プロジェクトとしてチェックアウト
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
途中遭遇したエラー
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
結論)下記エラーがでる場合は、↓二つの条件が満たされているかチェックする
条件1) CVSROOTディレクトリの親ディレクトリを xinetd で設定する
条件2) CVSROOTディレクトリの親ディレクトリを指定して login する
(pathは一例。本ドキュメントの設定とは違う。)
(1) no such repository (ログイン時)
ログイン時に
home/cvs/test_rep login: no such repository
(今回の原因)
xinetdに指定したディレクトリと違うディレクトリにloginしようとしていた
> % cvs -d :pserver:test_user@161.93.85.114:/home/cvs/test_rep/ login
↑タブを使うと/home/cvs/test_rep/のように後ろに/が入るが、これがあるとだめ
xinetd
> server_args = --allow-root= /home/cvs/test_rep pserver -f
(2) [サーバがエラーを報告しました No such file or directory](ログイン時。WSADをCVSクライアントとした場合)
ログイン時に↓ (WSADからの場合)コマンドラインからのloginでは何も言われず、あたかも成功したかのよう。
([サーバがエラーを報告しました No such file or directory])
Cannot access /home/cvs/test_rep/CVSROOT
(今回の原因)
xinetdに指定したディレクトリと同じディレクトリにloginしようとしていた(正しい操作)が、
ログイン対象のディレクトリに対して cvs init が行われていなかった(= CVSメタ情報を格納するCVSROOTディレクトリがなかった)
([サーバがエラーを報告しました No such file or directory])
Cannot access /home/cvs/test_rep/CVSROOT
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
参考URL
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
http://mink.phys.human.nagoya-u.ac.jp/~watanabe/tips/cvs.html
・・・ ただし、xinetdではなくinetd
http://web.sfc.keio.ac.jp/~s95898ym/comp/cvs-pserver.html
・・・ xinetdの設定方法。ユーザ作成方法。
http://www.naney.org/comp/cvs/faq/#startcvswithfile
・・・ CVS FAQ