DCPAM CVS リポジトリ作成メモ
以下は, DCPAM の CVS リポジトリを作成した際のメモ書きである.
CVS に関する情報源
CVS のポリシーや設定, 使い方に関する情報に関しては CVS に関するメモ を参照のこと.
以下の書籍も参考となる.
- カール フォーゲル (著), バー モシュ (著), Karl Franz Fogel (原著), Moshe Bar (原著), 竹内 里佳 (翻訳), でびあんぐる (翻訳), 2002: CVSによるオープンソース開発. [Open Source Development with CVS, Second Edition]. オーム社, ISBN: 4274064735, 380 pp.
前提
リポジトリを作成するホストには CVS ソフトウェアが入っている 必要がある.
Debian GNU/Linux であれば cvs パッケージをインストールすれば良い.
ポリシー
- DCPAM のリポジトリはホスト www.gfd-dennou.org の /GFD_Dennou_Club/ftp/arch/dcpam/cvsroot に作成する.
- DCPAM のリポジトリ内のファイルを編集可能なのは, www.gfd-dennou.org にアカウントを持ち (ssh で www.gfd-dennou.org にログインでき), dcpam グループに入っているユーザのみとする.
- 開発中は内部に大幅な変更が加わり, ディレクトリ構造なども どんどん変化することが考えられるため, プロジェクト名として 始めから「dcpam」を使わず, 「dcpam0」, 「dcpam1」, 「dcpam2」 を用いる. 大きく変更があり, 以前のものが邪魔になって来たら 古いプロジェクトは捨て, 新しいプロジェクトを立ち上げてそちらで 開発をおこなう.
- コミット時には dcpam グループにメールを送信する.
- DCPAM のリポジトリ内のテキストデータの日本語文字コードは EUC とする. (単にプラットフォームが Linux で, その標準文字コードが EUC であるという理由に基づいているのみである).
- 上記と同様に, commit 時のログメッセージに関しても, 英字または EUC の日本語のみとする.
CVS リポジトリ作成
※ 以下のリポジトリ作成に関しては一回こっきりで良いため, 既に作成済みである場合には下の プロジェクト開始 へ行って欲しい.
DCPAM の CVS リポジトリは www.gfd-dennou.org の /GFD_Dennou_Club/ftp/arch/dcpam/cvsroot に作成する. そのためにはまず www.gfd-dennou.org へログインする.
$ ssh www.gfd-dennou.org
ログインしたら /GFD_Dennou_Club/ftp/arch/dcpam/ まで移動する.
$ cd /GFD_Dennou_Club/ftp/arch/dcpam/
ここで cvs コマンドを実行すれば cvsroot を作成可能であるが, グループでの開発であることを考え, 作成するファイルのグループが dcpam となるように, そしてグループに書き込み権限を与えるように グループと環境変数を変更する.
$ sg dcpam $ umask 002
現在のグループは id コマンドで, umask は umask コマンドで知ることが できる. 準備が出来たら以下のコマンドを実行する.
$ cvs -d /GFD_Dennou_Club/ftp/arch/dcpam/cvsroot init
これで cvsroot ディレクトリが作成されたはずである.
グループ書き込み許可の設定
上記で umask などの設定をおこなったものの, s ビットを立てるなど, パーミッションの設定が必要となる. また cvs init コマンドで 作成したディレクトリやファイルの中にはグループ書き込み権限が 無いものもあるので, 以下で設定する.
リポジトリ cvsroot パーミッションの設定
cvsroot 以下で作成されるファイル, ディレクトリのグループを dcpam にするため, cvsroot に s ビットを立て, 書き込み権限を 与える. 念のためにグループも dcpam に設定する.
$ chmod g+s cvsroot $ chmod g+w cvsroot $ chgrp dcpam cvsroot
管理用ディレクトリ CVSROOT 内のパーミッションの設定
cvsroot が作成されれば, そのリポジトリに関する CVS の動作を 制御する CVSROOT ディレクトリも作成されているはずである.
このディレクトリ, およびそれ以下の特定のファイルに関して グループの変更と書き込み権限変更をおこなう.
CVSROOT ディレクトリ本体
グループを dcpam とし, グループに書き込み権限を与える. (これは少しアンセキュアな方針かもしれない. よりセキュアな 方法として, 代表的な管理者 1 人にのみ書き込み権限を与える という方針もあり得るだろう).
$ cd cvsroot $ chgrp dcpam CVSROOT $ chmod g+s CVSROOT $ chmod g+w CVSROOT
history, val-tags へグループ書き込み権限を与える
CVSROOT 以下にある history, val-tags にグループ書き込み権限 を与える. (グループは既に dcpam であると仮定している).
なお, history とはこのリポジトリ以下のプロジェクトに対して 行なわれた checkout, commit, rtag, update, release を記録 しているファイルである. cvs history コマンドで見ることが出来る. (動作の詳細は cvs history -x コマンドを参照のこと). ここではグループ dcpam で開発することを念頭に置くため, グループに書き込み権限を与えておく.
$ cd CVSROOT $ chmod g+w history
val-tags は検索を高速化するために, 有効なタグ名をキャッシュ しているファイルである. DCPAM プロジェクトではタグも使用するので, これにもグループ書き込み権限を与える.
$ chmod g+w val-tags
プロジェクト開始
既にプロジェクトも開始されており, その上で作業を行う場合には, 日常の作業を参考のこと.
プロジェクトを開始するには, まず環境変数を設定する. 環境変数 CVSROOT と, www.gfd-dennou.org へのアクセス方法を指定する 環境変数 CVS_RSH を設定する. (これらを指定しなくともコマンドに直接指定する方法もある).
$ export CVSROOT=:ext:www.gfd-dennou.org:/GFD_Dennou_Club/ftp/arch/dcpam/cvsroot $ export CVS_RSH=ssh
なお, www.gfd-dennou.org 内で作業をおこなう場合には
$ export CVSROOT=/GFD_Dennou_Club/ftp/arch/dcpam/cvsroot
のみでも構わない.
次に, プロジェクトとして含むファイル群の位置まで移動する. 仮に /home/morikawa/dcpam 以下にプロジェクトのソース, ドキュメントなど全て含めて置いてあるならば, まず そこへ移動する.
$ cd /home/morikawa/dcpam
ここで cvs import コマンドを実行するとカレントディレクトリを先頭 として全てのファイルがインポートされる. 余計なファイルは全て 消しておくこと. ( .*** ファイルは ls では見えないので ls -a で ちゃんと探すこと).
掃除が終ったらプロジェクトを開始させる. 開始は以下のコマンドでおこなう.
$ cvs import -m \ "DCPAM (Dennou Club Planetary Atmospheric Model) \ Version 0 (Tentative Version)" dcpam0 dcpam Initial ↑ ↑ ↑ ↑ コメント プロジェクト名 | リリースタグ || | ディレクトリ名 | ベンダー
「No conflicts created by this import」 というような メッセージが出れば, インポート成功.
プロジェクトのパーミッションの確認
プロジェクトのディレクトリのパーミッションを確認しておく.
$ ssh www.gfd-dennou.org $ cd /GFD_Dennou_Club/ftp/arch/dcpam/cvsroot $ ls -l drwxrwsr-x 3 morikawa dcpam 53 8月 31 19:40 dcpam0/
上記のようにグループが dcpam で権限が rws の場合は問題ない. もしそうでないのなら, 以下のコマンドでグループとパーミッションを 変更すること.
$ chgrp dcpam dcpam0 $ chmod g+s dcpam0 $ chmod g+w dcpam0
なお, もしも dcpam0 が上記のようなパーミッションになっていなかった 場合, それよりも下層ディレクトリのパーミッションもそれと同様な 可能性がある. それらに関してもグループとパーミッションを設定すること.
※ プロジェクト以下にある「ファイル」に関しては (グループは dcpam である必要があるが) パーミッションは -r--r--r-- で問題ない. cvs コマンドを介せば, 正しく commit, add, remove などが可能である.
CVS リポジトリのカスタマイズ
ポリシー の 4 〜 6 に従い, CVS リポジトリのカスタマイズを行う. それぞれ, CVS に関するメモ の以下の項目を参考のこと.
- CVS に関するメモ:
cvs リポジトリのカスタマイズ
- commit をメール通知する設定
- メールの送信先は "dcpam_at_gfd-dennou.org" (_at_ は @ に置き換える) とする
- メールの題目 (cvsform.pl の $project の設定値) は "dcpam" とする.
- euc のファイルのみ登録するには
- commit メッセージを euc のみに
- commit をメール通知する設定
また, バイナリファイルの一部が CVS キーワードとして誤って置換されて しまわないよう, 以下の作業も行う.
- CVS に関するメモ: cvs リポジトリのカスタマイズ
日常の作業
リポジトリの作成とプロジェクトの作成が既になされている場合には, それらを用いて cvs チェックアウト, 作業コピーでのプログラムの作成や改変, cvs コミットなどを行うこととなる. 作業を始める前に環境変数を以下のように設定する.
$ export CVSROOT=:ext:www.gfd-dennou.org:/GFD_Dennou_Club/ftp/arch/dcpam/cvsroot $ export CVS_RSH=ssh
これ以降の作業については, 以下を参考のこと.