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 パッケージをインストールすれば良い.

ポリシー

  1. DCPAM のリポジトリはホスト www.gfd-dennou.org/GFD_Dennou_Club/ftp/arch/dcpam/cvsroot に作成する.
  2. DCPAM のリポジトリ内のファイルを編集可能なのは, www.gfd-dennou.org にアカウントを持ち (ssh で www.gfd-dennou.org にログインでき), dcpam グループに入っているユーザのみとする.
  3. 開発中は内部に大幅な変更が加わり, ディレクトリ構造なども どんどん変化することが考えられるため, プロジェクト名として 始めから「dcpam」を使わず, 「dcpam0」, 「dcpam1」, 「dcpam2」 を用いる. 大きく変更があり, 以前のものが邪魔になって来たら 古いプロジェクトは捨て, 新しいプロジェクトを立ち上げてそちらで 開発をおこなう.
  4. コミット時には dcpam グループにメールを送信する.
  5. DCPAM のリポジトリ内のテキストデータの日本語文字コードは EUC とする. (単にプラットフォームが Linux で, その標準文字コードが EUC であるという理由に基づいているのみである).
  6. 上記と同様に, 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 チェックアウト, 作業コピーでのプログラムの作成や改変, cvs コミットなどを行うこととなる. 作業を始める前に環境変数を以下のように設定する.

$ export CVSROOT=:ext:www.gfd-dennou.org:/GFD_Dennou_Club/ftp/arch/dcpam/cvsroot
$ export CVS_RSH=ssh

これ以降の作業については, 以下を参考のこと.