[ English | Japanese ] [ 地球流体電脳倶楽部 / 惑星大気モデル DCPAM ] [ ディレクトリ管理の手引き / SIGEN ]

[DCPAM トップページ | TEBIKI INDEX | SIGEN ファイル]

DCPAM CVS リポジトリ作成メモ

以下は, DCPAM の CVS リポジトリを作成した際のメモ書きである.

CVS に関する情報源

CVS のポリシーや設定, 使い方に関する情報に関しては CVS に関するメモ を参照のこと.

前提

リポジトリを作成するホストには cvs ソフトウェアが入っている 必要がある.

ポリシー

参考資料

以下の作業は概ね以下の資料を参考におこなった. もしも作業の際に分からないことがあったり, より詳細なことを 知りたい場合には参照して頂きたい.

書籍
カール フォーゲル (著), バー モシュ (著), Karl Franz Fogel (原著), Moshe Bar (原著), 竹内 里佳 (翻訳), でびあんぐる (翻訳), 2002: CVSによるオープンソース開発. [Open Source Development with CVS, Second Edition]. オーム社, ISBN: 4274064735, 380 pp.

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 と 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 などが可能である.

コミット時には dcpam ユーザにメールを送信する

以下では, コミット時にユーザにメールを送信するための設定を記す.

バイナリデータの扱い

CVS は $Revision$ などというような特殊な文字列を $Revision: 1.3 $ のように置き換えたり, 改行コードを LF 形式に置き換えたりするように なっている. これは便利な機能の1つなのだが, バイナリデータなどで 偶然こういった文字列と認識されて置き換えられると, 結果的に データが壊れてしまう. そのため, ある拡張子のデータに関しては バイナリデータと取り扱うようにする. これには CVSROOT 以下の cvswrappers に以下のような記述を加えると良い.

こうすることで, 拡張子が gif, GIF, jpg のものに関してはバイナリ データと扱われ, 文字列の置換が行なわれなくなる. (これは開発者個々人が cvs add する際に -kb オプションを付けるのと 同じ効果を発揮する.)

ファイルの文字コードチェック

上記ポリシーで「日本語文字コードは EUC」としていたが, 各ユーザの 開発環境を完全に EUC にすることは難しく, Shift-JIS などで commit されてしまう可能性がある. よって, EUC 以外のデータに 関しては, commit されないように設定する. 改行コードは CVS の仕様で自動的に UNIX 形式 (LF 形式) に 変換されるので, ここでは気にしないことにする.

ログメッセージの文字コードチェック

上記の手法だと書き換えられるファイル本体の文字コードのチェックは 可能だが, ログメッセージの文字コードのチェックが出来ない. RCS ファイルには本体もログメッセージも両方書き込まれていることから, 文字コードは本体と一致させたい. また, リビジョン毎にメッセージの 文字コードが違うのは気持ち悪いので, それも単一の文字コード (ここでは EUC) にする.

ファイルの文字コード変換

上記ポリシーで「日本語文字コードは EUC」としていたが, 各ユーザの 開発環境を完全に EUC にすることは難しい, よってテキストデータに 関しては, 自動的に EUC に置換するようにしてしまう.

※ 注意!!! ※

この方法を行なうためには CVSROOT/cvswrappers にて -t/-f といった フィルタオプションが有効である必要があるのだが, バージョン 1.10 以降, このオプションは使用できなくなっている (いくつかのバグが あったため, とりあえず使用できなくしたらしい). よって以降の 手引きは, -t/-f オプションが利用できるようになった際に行なって 欲しい... (T_T)

そこらへんの事情に関しては以下を参照のこと

なお, この方法は以下の URL を参照して行なった.


DCPAM Development Group / GFD Dennou Staff dcstaff@gfd-dennou.org
Last Updated: 2005/05/31, Since: 2004/08/31