CVSは、大規模ソフトウェアプロジェクトのソースコード管理によく使用される Concurrent Versioning System ( バージョン管理システム ) です。CVSは、喪失しないようにすべてのファイルのすべてのバージョンを保持し、異なる人々による使用を追跡記録します。CVSは、2人またはそれ以上の人が同じファイルを更新している場合に、コードを結合する方法も提供します。すべてのコードおよびバージョンはセントラルサーバに保存されます ( Moodleの場合は、Sourceforge です )。
サイトを運用するためにCVSを使ってMoodleをダウンロードしたいだけでしたら、おそらくこのページは必要ありません - より簡単なMoodleダウンロードページのCVS使用説明に従うだけにしてください。
- 開発者としてプロジェクトに参加する
- CVSモジュール
- 基本的なCVSコマンド
3.1. UnixのCVS
3.2. WindowsのCVS- ブランチの取り扱い
4.1. トランク開発
4.2. 各リリースのステイブルブランチ
4.3. 大幅な変更に関するフィーチャーブランチ
さて、あなたはCVS書き込み権を与えられて、Moodleの開発およびメンテナンスに関して私達を支援することになりました! ご搭乗ありがとうございます!
MoodleのCVSアーカイブを書き換えるためには、まず最初にSourceforgeにアカウントを持つ必要があります ( 登録は無料で簡単です )。このページの例として、あなたのユーザ名が myusername で、パスワードが mypassword だと仮定しましょう。あなたのCVSホームディレクトリを作成するには、sourceforge利用説明のスペシャルノートを取得してください - CVSで新しいアカウントを作成する場合、「有効」にする必要がある作業です。cvs.sourceforge.netにインタラクティブに接続するには、基本的にsshを使用する必要があります。
アカウントの作業を完了した時点で、Martin Dougiamasに連絡してください。あなたのアカウントが特定のMoodleディレクトリに書き込みアクセスできるように、彼が設定作業を行います。
CVSコマンドを実行するときに毎回 mypassword の入力を避けるには、認証キーを使用するためのSourceforge道案内に従ってください。このステップは任意ですが、あなたのCVSに関する経験をさらに素晴らしくすることができます。
この作業が完了したら、あなたが必要なすべてのパーミッションを設定する必要があります。そして、あなたのマシンを設定して、現在のソースをダウンロードすることで、作業を開始することができます。
CVSにおいて「モジュール」は分類されたコード群を参照します。Moodleでは、リボジトリに下記のモジュールを持っています:
moodle - Moodleメインソースコード
contrib - ユーザ寄与および開発における他の様々なコード
mysql - データベース管理のためMoodleに付加するカスタマイズされたphpMyAdmin
windows-cron - Windowsシステムでcronの動作を可能にする小さなパッケージ
docs - ユーザ寄与の様々な特別文書
ほとんどの人達は、現在のmoodleモジュールの機能に関する作業を行っていますが、contribモジュールに新しいアイディアを寄与している多くの人達もいます。 contribエリアのコードが一定レベルの完成度に到達した場合、メインmoodleツリーに移動されます。
3.1 UnixのCVS
Sourceforge CVSは、セキュリティのためsshをトランスポート・レイヤーで使用しますので、UnixシェルでCVS_RSH環境変数を設定する必要があります。毎回、すべてを入力しないように .bashrc または .cshrc にこれらのコマンドを記述した方が良いでしょう:
setenv CVS_RSH ssh (for csh, tcsh etc)
export CVS_RSH=ssh (for sh, bash etc)次に、下記のコマンドを ( すべてを1行で ) 入力することで、最新のMoodle開発バージョンをチェックアウトすることができます:
cvs -z3 -d:ext:myusername@cvs.sourceforge.net:/cvsroot/moodle co moodleコマンドは他のCVSモジュールにも似ています:
cvs -z3 -d:ext:myusername@cvs.sourceforge.net:/cvsroot/moodle co contribこの最初のCVSコマンドをインストール済みのmoodle上で実行しないようにしてください。空の新しいディレクトリで実行してください。
認証キーを設定しない場合は、各コマンドに対して mypassword を入力するよう要求されますので注意してください。
さて、あなたは新しい「moodle」ディレクトリを持っています。ディレクトリをリネームして、好きな場所に移動することができます。中に入ってください:
cd moodleすべての最新Moodleファイルがディレクトリの中に入っています。あなたがコピーしたファイルを変更することができます。あなたのファイル、ディレクトリとサーバのメインCVSコピーを比較するには、cvs diff を使用してください。例:
cvs diff -c config-dist.php
cvs diff -c langサーバより最新版をフェッチするには、次のコマンドを使用してください:
cvs update -dPあなたの新しいファイルをサーバにコピーするには、次のようなコマンドになります:
cd lang/ca
cvs commitコメントの追加を要求されますので ( デフォルトテキストエディタによって決まります ) ... 意味のあるコメントを追加してエディタをクローズしてください ... ファイルは、Sourceforgeに送信され、保存されます。完了です!
さらに時間を節約するため、ホームディレクトリの .cvsrc という名称のファイルにデフォルト値を記述することができます。例えば、私は次のようにしています:
diff -c
update -dP詳細は「cvsヘルプ」をご覧ください ...
3.2 WindowsのCVS
最初に、あなたの開発者アカウントを使って、完全に新しいMoodleのコピーをダウンロードする必要があります。
- TortoiseCVSを tortoisecvs.org からダウンロードしてインストール、そしてリブートしてください。
- Moodleをダウンロードしたいフォルダを探すか、新しいフォルダを作成してください。
- そのフォルダでマウスを右クリックして、メニューから「CVS Checkout」を選択してください。ダイアログボックスが表示されます。
- CVSROOTフィールドに下記のテキストを入力してください ( あなたのユーザ名を使用してください! ):
:ext:myusername@cvs.sourceforge.net:/cvsroot/moodle- 「Module」フィールドに「moodle」と入力すると、最新のMoodle開発バージョン、「contrib」と入力するとユーザ寄与ディレクトリ、「mysql」と入力するとMySQL Adminモジュールを取得します。
- 「OK」ボタンをクリックすると、すべてのファイルがダウンロードされます。
ダイアログボックスは、ダウンロード中のすべてのファイルを表示し、暫くするとMoodleの完全なコピー処理が終了します。この最初のチェックアウトの後、CVSサーバより最新の更新ファイルをフェッチすることができます:
- Moodleフォルダ ( またはファイル ) で、マウスの右クリックをして「CVS Update」を選択してください。
- くつろいで、スクロールしながらログを確認してください。取得されるバージョンとコンフリクトするローカルコードの変更により、コンフリクトが発生しているか注意してください - これらのファイルを編集して、手動でコンフリクトを解消する必要があります。
ファイルを修正した後 ( アイコンが緑から赤に変わるのに気付くでしょう! )、CVSサーバにコミットして戻すことができます:
- Moodleフォルダ ( またはファイル ) でマウスの右クリックをして、「CVS Commit...」を選択してください。
- ダイアログボックスで、コミットを行う変更内容に関する分かりやすい説明文を入力してください。
- 「OK」ボタンをクリックしてください。あなたの変更内容がサーバに送信されます。
この図は、時間とともにメインmoodleモジュールが、どのように異なるバージョンに分岐されるか示しています。
現在のすべてのタグおよびブランチを見るには、古いファイルのどれでも結構ですので、このコマンドを使用してください ( トップmoodleディレクトリにある index.phpファイルのようなファイル ):
cvs status -v index.phpいくつかのタグ付けガイドライン:
- タグおよびブランチ名は常に大文字にする必要があります。
- タグおよびブランチは常に全体のモジュール ( Moodleのすべて ) に適用される必要があります。個々のファイルやディレクトリにタグ付けしないでください。
- moodleに関わる人達がタグを信頼しているため、タグのリネームは許可しません。ですから、最初に正しいネーミングを行ってください!
CVSのトランクは、Moodleのメイン開発バージョンです。CVSでは、HEADまたはデフォルトブランチとして知られています。
Moodleの開発者は、これを可能な限り安定させるようにしますが、通常はバグや少ない程度の不安定さのある新しいコードが含まれる場合があります。
しばしば、私達は製品が十分な機能を持ち、リリースすることができると決定します。この時、トランクは MOODLE_XX_BETA タグにタグされ ( そのポイントにロールバックする場合に備えて )、新しいブランチが MOODLE_XX_STABLE と呼ばれるリリースのために形成されます。
この時点で、ベータパッケージもリリースされます - これは、CVSを使用せず、最新機能をテストしてバグをレポートしたいテスター用です。
ステイブルブランチ MOODLE_XX_STABLE が作成されるとすぐに、しばらくの間、開発者の成果は2つの流れに分岐されます。一部の人は新しい機能のために開発を続けますが、ほとんどの開発者は現在のステイブルブランチに集中し、発見されたバグの修正を行います。
ルートディレクトリで次のUnixコマンドを使用して、あなたのMoodleのローカルコピーをステイブルバージョンに入れ替えることができます:
cvs update -dP -r MOODLE_XX_STABLEこの後で、上記に記載されたコマンドすべては、ステイブルバージョンに適用されます。トランクバージョンに戻りたい場合は、次のコマンドを実行してください:
cvs update -dPAWindowsクライアントでは、ブランチを選択できるメニューがあります。
新しいステイブルブランチが確かに安定している場合、リリースを宣言することができます。配布のためパッケージが作成され、ブランチは ( Martinにより ) MOODLE_XXX のようにタグされます。
定期的に、ステイブルブランチのバグフィックスは、将来のMoodleバージョンで利用できるようにトランクにマージされます。MOODLE_XX_MERGEDと呼ばれるフローティングタグは、最新マージの経過を追うために保守されます。このようなマージの手順は下記の通りです:
- 最新のトランクバージョンを取得する。
cvs update -dPA- 最近のマージ以来のすべてのブランチを、あなたのトランクバージョンにマージする。
cvs update -kk -j MOODLE_13_MERGED -j MOODLE_13_STABLE- コンフリクトに関してアップデートログを慎重に観察して、コンフリクトのあるすべてのファイルを修正する。
- マージされているコピーをチェックして、CVSトランクバージョンに戻す。
cvs commit- ブランチバージョンに戻る。
cvs update -dPr MOODLE_13_STABLE- この処理を次回も繰り返すことができるように、フローティングマージタグを更新する。
cvs tag -RF MOODLE_13_MERGED
最後に、可能であればステイブルブランチ内にあるMoodleのすべてのversion.phpファイルの値 $version を更新しないでください ( 必要であれば最後の桁を除いて )。理由は、非常に安定したバージョンから次の安定したバージョンにアップデートするときに、トランクで起こったデータベースへのアップグレードを逃す可能性があるからです。
時々、数人が開発を行うために、非常に大きな機能を登録する必要があります。しかし、それはメイン開発トランクに入れるには、あまりにも不安定です。
このような場合、機能の開発を行うために短期のブランチを作成し、できるだけ早くメイントランクにマージすることができます。例として、MOODLE_14_WIDGET という名称のブランチを上の図で見ることができます。
これを新しいウィジェット機能に使用したい場合は、下記の手順に従ってください:
- 本当に必要か他の開発者と議論します!
- MOODLE_XX_WIDGET_PRE という名称の新しいタグを ( moodleすべての ) トランクに作成します。
cvs tag -R MOODLE_XX_WIDGET_PRE- MOODLE_XX_WIDGET という名称のブランチを作成します。
cvs tag -Rb MOODLE_XX_WIDGET- 機能が適度に安定するまでブランチで開発作業を行います。必要に応じてコミットします。
cvs commit- 準備ができたら、すべてのブランチをトランクにマージ、コンフリクトを修正、これをトランクにコミットし、ブランチを放棄します。
cvs update -dPA
cvs update -kk -j MOODLE_XX_WIDGET
cvs commit
グッドラック、気を付けて楽しんでください!
Version: $Id$