V10

CVS を使用したバージョン管理本書に記載の内容は、将来予告なしに変更することがあります。これらの情報について MSE（Magic Software EnterprisesLtd.）および MSJ（Magic Software Japan K.K.）は、いかなる責任も負いません。本書の内容につきましては、万全を期して作成していますが、万一誤りや不正確な記述があったとしても、MSE および MSJ はいかなる責任、債務も負いません。
MSE および MSJ は、この製品の商業価値や特定の用途に対する適合性の保証を含め、この製品に関する明示的、あるいは黙示的な保証は一切していません。MSE および MSJ は、本製品の使用またはその使用によってもたらされる結果に関する保証や告知は一切していません。この製品のもたらす結果およびパフォーマンスに関する危険性は、すべてユーザが責任を負うものとします。この製品を使用した結果、または使用不可能な結果生じた間接的、偶発的、副次的な損害（営利損失、業務中断、
業務情報の損失などの損害も含む）に関し、事前に損害の可能性が勧告されていた場合であっても、MSE および MSJ、その管理者、役員、従業員、代理人は、いかなる場合にも一切責任を負いません。
本書に記載のソフトウェアは、製品の使用許諾契約書に記載の条件に同意をされたライセンス所有者に対してのみ供給されるものです。同ライセンスの許可する条件のもとでのみ、使用または複製することが許されます。当該ライセンスが特に許可している場合を除いては、いかなる媒体へも複製することはできません。ライセンス所有者自身の個人使用目的で行う場合を除き、MSE または MSJ の書面による事前の許可なしでは、いかなる条件下でも、本書のいかなる部分も、電子的、機械的、撮影、録音、その他のいかなる手段によっても、コピー、検索システムへの記憶、電送を行うことはできません。
一般に、会社名、製品名は各社の商標または登録商標です。サードパーティ各社商標の引用は、MSE および MSJ の製品に対する互換性に関しての情報提供のみを目的としてなされるものです。
本書において、説明のためにサンプルとして引用されている会社名、製品名、住所、人物は、特に断り書きのないかぎり、すべて架空のものであり、実在のものについて言及するものではありません。

初版
第２版

２００７年４月２０日
２００７年７月６日

マジックソフトウェア・ジャパン株式会社

CVS を使ったバージョン管理2

目次
目次 ................................................................................................................................................................... 3
1. CVSを使ったプロジェクト開発の基本 ...................................................................................................... 4
1.1. バージョン管理機能について ............................................................................................................. 5
1.2. 運用形態 ............................................................................................................................................. 7
1.2.1. 専用サーバを使う形態 ..................................................................................................................... 7
1.2.2. 開発PCでCVSサーバを兼用する形態 .............................................................................................. 8
1.2.3. 同一の開発用PC上で複数のユーザが開発する場合 ......................................................................... 8
1.3. ユーザ認証 ........................................................................................................................................ 10
1.4. 誤った使い方の例 ............................................................................................................................. 12
誤った例１： 共有ネットワークフォルダのプロジェクトを共有する ................................................. 12
誤った例２： ローカルコピーを異なった開発者が使う....................................................................... 121.5. 一般的注意事項................................................................................................................................. 14
2. CVSのインストール ................................................................................................................................ 15
2.1. Magic Studioと共にインストールする場合...................................................................................... 15
2.2. CVS サーバのみをインストールする場合 ........................................................................................ 18
3. Magic Studio V10 でCVSを使用する...................................................................................................... 19
3.1. 新規プロジェクトの作成 .................................................................................................................. 20
3.2. 既存のMagicプロジェクトをCVSサーバに追加する ........................................................................ 223.3. 既存のCVSリポジトリからMagicプロジェクトを取得..................................................................... 24
4. CVSNTサーバの環境設定........................................................................................................................ 26
4.1. CVS リポジトリの追加..................................................................................................................... 26
4.2. CVS リポジトリの削除..................................................................................................................... 29
5. CVS利用時のベストプラクティス ........................................................................................................... 31
チェックアウトの単位.......................................................................................................................... 31
各リポジトリ単位のチェックアウト .................................................................................................... 31
個々のプログラムのチェックアウト .................................................................................................... 31
コメント ............................................................................................................................................... 32
バックアップ ........................................................................................................................................ 32
ロールバック ........................................................................................................................................ 32
オフライン作業 .................................................................................................................................... 33
WANを介したチーム開発..................................................................................................................... 33
6. その他の注意事項 .................................................................................................................................... 34
ユーザ認証について ............................................................................................................................. 34
クリティカルなタイミングで同時チェックアウトできてしまう現象 .................................................. 34
自動的にチェックアウト状態になる場合 ............................................................................................. 34
チェックアウト時のコメント入力........................................................................................................ 34
CVSリポジトリについて...................................................................................................................... 35

CVS を使ったバージョン管理3

1. CVSを使ったプロジェクト開発の基本
Magic eDeveloper V10 では、プロジェクトのチーム開発とバージョン管理のために、サードパーティのバー
ジョン管理ソフトウェアを利用します。本書は、Magic Studio V10 でサポートされているバージョン管理ソ
フトウェアの一つである CVS を使うときのガイドです。
CVS はバージョン管理ソフトウェアソリューションの 1 つで、フリーウェアです。Magic eDeveloper V10には CVS の Windows 版である CVSNT がバンドルされています。
本書は、バージョン管理システムとして CVS を使用する場合に、CVS によるバージョン管理の概念と運用
方法、CVS のインストール処理と CVS を使用した Magic eDeveloper のプロジェクトのバージョン管理を行
うための基本的な手順、および注意事項等を説明します。
本書では、以下の表記を使います。
参考事項： 知っておくとより便利に Magic Studio を使えるようになる事柄。あるいは、本書の中での表記上の説明事項など。
注意事項： 設定、操作等に注意が必要で、間違えると何らかの不利益な結果が起こる可能性のある事項。
Microsoft Visual SourceSafe との比較： Magic Studio の CVS サポートと Microsoft Visual
SourceSafe サポートとで、機能的な違いのある場合の説明事項。

以下、本書では Microsoft Visual SourceSafe を VSS と略記します。

CVS を使ったバージョン管理4

1.1. バージョン管理機能について
Magic eDeveloper V10 では、プロジェクト中のすべてのリポジトリ定義を XML ファイルで管理しています。
Magic eDeveloper のプロジェクトのバージョン管理は、それらの XML ファイルのバージョン管理をすることにより実現しています。
下図に、CVS バージョン管理システムを用いたバージョン管理の概念を説明します。
開発者 A

Studio V10
ローカルコピー①

CVS バージョン
管理システム(CVS サーバ)
開発者 B

Studio V10
ローカルコピー②

開発者 C

CVS

リポジトリ

Studio V10
ローカルコピー③

CVS バージョン管理システムでは、CVS サーバが稼動しており、修正履歴を管理するデータベース(CVS リ
ポジトリ)を集中管理しています。
CVS では、修正履歴を管理するデータベースを、単に「リポジトリ」と呼んでいますが、本書の中では、Magic のリポジトリと区別するために、「CVS リポジトリ」と呼ぶようにします。
CVS リポジトリの内容は、CVS 専用の内部形式で管理格納されています。OS 上のファイルとして実装されていますが、このファイルを直接 Magic Studio が読み込むことはできません。
CVS リポジトリには、Magic のプロジェクト定義をなす XML ファイルおよびその修正履歴がすべて格納されており、これがプロジェクトのマスターとなります。バージョン管理はファイル単位で行われ、最初に作成したときのバージョンをバージョン 1.1 とし、修正が行われるたびに、バージョン番号が 1.2、1.3、･･･と上がっていきます。
各開発者は、自分が操作している PC のローカルハードディスクに、プロジェクトファイルのローカルコピーを取得し、このローカルコピーに対して、Magic Studio を使って修正を行っていき、適時自分の開発した成果をマスターに反映させていく、という流れで、全体の開発が進んでいきます。

CVS を使ったバージョン管理

5

CVS リポジトリ

開発者 A
①チェック
アウト
Prg_1.xml（Ver.1.3 のコピー）

Prg_1.xml
Ver.1.1
Ver.1.2
Ver.1.3② Magic Studioを使って編集Ver.1.4

Prg_1.xml（編集終了）③ チェックイン

より詳しく見ていくと、バージョン管理の基本はチェックアウトとチェックインです。これを図で表したのが上図です。ここでは、開発者 A がプログラム１ (XML ファイルでは Prg_1.xml) を修正する場合を例示しています。
まず、バージョン管理システム上の CVS リポジトリには、プログラム１が格納されており、この時点でバー
ジョン 1.3 まで修正がされているとします。
① 開発者 A がプログラム１を変更する前に、まず、開発者 A はプログラム１のチェックアウトを行います。
チェックアウトにより、CVS サーバは Prg_1.xml ファイルに対してロックをかけ、他のユーザが同時にチェックアウトすることができないようにします。
② チェックアウトした後、開発者 A は Magic Studio を使ってプログラム１を修正します。このとき、Magic Studio が修正するのは、開発者 A の PC のハードディスク上にある、Prg_1.xml (Ver.1.3)のロー
カルコピーです。
③ 編集が済んで動作の確認まで終わったら、開発者 A は編集終了した Prg_1.xml を CVS リポジトリにチェックインします。チェックインにより CVS サーバは、ローカルコピーの内容を CVS リポジトリに格納し Ver1.4 として、修正履歴を記録します。同時に、チェックアウトによって作られていたロックを解除し、他のユーザがチェックアウトするのを許すようにします。

CVS を使ったバージョン管理6

1.2. 運用形態
1.2.1. 専用サーバを使う形態
この形態では、共有のサーバに CVS サーバをインストールし、そのハードディスク上に CVS リポジトリを作成します。これをマスターのプロジェクトファイルとします。
各開発者は、Magic Studio V10 で開発を行いますが、Magic Studio V10 は、内部的に CVS クライアントのプログラムを介して、自分の PC のハードディスクにプロジェクトファイルの個人専用のローカルコピーを作成します。このローカルコピーは、Magic Studio が直接読み書きすることのできる形式となっています。
開発者は、このローカルコピーに対して Magic Studio を使って修正を加えます。そして、ローカルコピーとCVS サーバのマスタープロジェクトファイルとの同期は、開発者によるチェックアウト・チェックインにより行います。

Magic Studio V10
開発用 PC ①
RDWINXP2

CVS サーバ
RDWINSRV1

開発者ユーザ ID:
magic
CVS リポジトリ
eDevDB
プロジェクトファイル
magic さん専用
ローカルコピー
MyProject

Magic Studio V10
開発用 PC ②
RDWINXP3
開発者ユーザ ID:
magic2

プロジェクトファイル
magic2 さん専用
ローカルコピー

各 PC には、以下のようにソフトウェアをインストールしておきます。
z CVS サーバのマシン RDWINSRV1 には、CVS サーバをインストールし、CVS リポジトリを作成しておきます。Magic Studio をインストールしておく必要はありません。
z 各開発者の開発用 PC (RDWINXP2 および RDWINXP3) には、Magic Studio、CVS クライアント、
CVS サーバをインストールします。
開発用 PC に Magic Studio と CVS クライアントおよび CVS サーバをインストールすると、インストーラがデフォルトでそれぞれの PC に eDevDB という CVS リポジトリを作成します
が、上記構成では開発用 PC の CVS リポジトリを利用しません。

CVS を使ったバージョン管理7

1.2.2. 開発PCでCVSサーバを兼用する形態
この形態では、CVS 用の専用サーバを使わず、1 台の開発者 PC を CVS 用のサーバと兼用させるものです。
下図の例では、RDWINXP2 が、開発用 PC①と CVS サーバとを兼ねています。
この形態では、開発 PC①のローカルハードディスクに CVS リポジトリがありますが、これを直接 Magic
Studio で扱うことはできません。同一 PC 上で作業する開発者(ユーザ ID: magic)も、自分用のローカルコピーを作成し、Magic Studio はそれを修正することになります。従って、CVS サーバとしては、自分のホス
ト名 RDWINXP2 あるいは localhost を指定することになります。
別 PC(RDWINXP3)で開発している開発者 magic2 は、CVS サーバとして RDWINXP2 を指定します。

開発者ユーザ ID:
magic

プロジェクトファイル
magic さん専用
ローカルコピー

Magic Studio V10
開発用 PC ① 兼 CVS サーバ
RDWINXP2MyProject

CVS リポジトリ
eDevDB

Magic Studio V10
開発用 PC ②
RDWINXP3
開発者ユーザ ID:
magic2

プロジェクトファイル
magic2 さん専用
ローカルコピー
各々の PC には、Magic Studio、CVS クライアントおよび CVS サーバをインストールします。インストー
ラはデフォルトで両方の PC に eDevDB という CVS リポジトリを作成しますが、RDWINXP2 のもののみを利用し、RDWINXP3 のものは利用しないことになります。

1.2.3. 同一の開発用PC上で複数のユーザが開発する場合
これは、異なる開発者(magic および magic2) が、同一の開発用 PC① (RDWINXP2)で開発する可能性がある場合の運用方法です。CVS サーバは、専用サーバを利用する形態でも、開発 PC で CVS サーバを兼用する形態でも、いずれも可能です。
次の図は、専用 CVS サーバを利用する場合の図です。

CVS を使ったバージョン管理8

Magic Studio V10
開発用 PC ①
RDWINXP2
magic さん専用
ローカルコピー

CVS サーバ
RDWINXP1

CVS リポジトリ
eDevDB

開発者①
ID: magic
MyProject

開発者②
ID: magic2

magic2 さん専用
ローカルコピー

次の図は、開発 PC で CVS サーバを兼用する場合です。

magic さん専用
ローカルコピー
開発者①
ID: magic

開発者②
ID: magic2

Magic Studio V10
開発用 PC ①
RDWINXP2
CVS リポジトリ
eDevDB

magic2 さん専用
ローカルコピー

MyProject

いずれの場合でも、各開発者ごとに別のローカルコピーを作成して作業します。

CVS を使ったバージョン管理9

1.3. ユーザ認証
セキュリティのために、CVS ではユーザ ID とパスワードとを用いてユーザ認証を行います。CVS 自体にはさまざまなユーザ認証の方法が提供されていますが、Magic Studio で CVS を使う場合には、Windows のユーザ ID と統合した認証を行うようになっています。
具体的には次のようになります。

Magic Studio V10
開発用 PC ①
RDWINXP2
開発者①
ID: magic

magic さん専用
ローカルコピー

CVS サーバ
RDWINSRV1

CVS サーバへ
magic で接続

CVS リポジトリ
eDevDB

MyProject
開発者②
ID: magic2

magic2 さん専用
ローカルコピー

Windows の
ユーザ認証
機能を利用
するので、
magic
magic2を登録しておく。

CVS サーバへ
magic2 で接続
z

Magic Studio が CVS サーバに接続する際には、Windows にログインしているユーザ ID が使われます。
上の例では、開発者① (ユーザ ID magic)が開発しているときには CVS サーバへは magic でログイン
し、開発者② (ユーザ ID magic2)が開発しているときには CVS サーバへは magic2 でログインします。

z

CVS サーバのユーザ認証は、Windows のユーザ認証機能を利用します。このため、CVS サーバの動作しているマシンには、CVS にアクセスするすべての開発者のユーザ ID を登録しておく必要があります。
上の例では、CVS サーバのある RDWINSRV1 に magic と magic2 とを登録しておきます。

z

Magic Studio が起動して最初に CVS サーバに接続する際、CVS サーバへの認証のためにパスワードの入力が要求されます。この際指定するパスワードは、CVS サーバの動作しているマシンに登録されているパスワードです。開発用 PC に登録されているパスワードとは必ずしも一致している必要はありません。

z

プロジェクトのローカルコピーを最初に作成するときに、ログオンしている Windows ユーザ ID がCVS の接続ユーザ ID としてローカルコピーに記録されるので、ローカルコピーは各開発者に固有のものとなります。

z

プロジェクト作成後にプロジェクトを再オープンする時に、別の開発者(別のユーザ ID でログインした人)が利用することはできません。
例えば、上の例では、magic でログインして作成した magic さん専用ローカルコピーを、magic2 でログインした開発者②が使うことはできません。

zWindows のログオンユーザと、開発版を起動するユーザが異なる場合、CVS のログオンに成功しても、CVS を使ったバージョン管理10

オフラインでしか作業ができません。

VSS では Windows のログオンユーザとは別に独自のユーザ ID を管理しており、Magic Studio
でバージョン管理下のプロジェクトを開くときに、ログオンユーザ ID とは異なる、VSS 独自のユーザを使ってアクセスすることができます。

CVS を使ったバージョン管理11

1.4. 誤った使い方の例
前節で説明した方法を守らずにチーム開発を行うと、正しく開発を行うことができません。ここでいくつかの誤った運用方法の例を挙げます

誤った例１： 共有ネットワークフォルダのプロジェクトを共有する
ファイルサーバ上にプロジェクトファイルを作り、開発上 PC からはネットワークドライブとしてマッピン
グして、複数の開発者が直接このプロジェクトファイルを修正することはできません。( 下図）チーム開発を行う場合には、履歴の管理の必要性の有無に関わらず、必ず CVS などのバージョン管理ソフト
ウェアを使い、各開発者ごとにローカルコピーを作らなければなりません。
誤った例①： ローカルコピーを作らず、ネットワークドライブ上のプロジェ
クトファイルを、複数の開発者が直接編集する

Magic Studio V10
開発用 PC ①
RDWINXP2
開発者①
ID: magic

ファイルサーバ
RDWINSRV1

プロジェクトファイル

Magic Studio V10
開発用 PC ②
RDWINXP3

MyProject

開発者②
ID: magic2

誤った例２： ローカルコピーを異なった開発者が使う
次の図の例では、開発者①が magic というユーザ ID でログインして、CVS リポジトリからローカルコピーを作成してログアウトした後、別の開発者②が別のユーザ ID magic2 でログインして、このローカルコピーを使って開発作業をしようとしているところです。
このような場合には、プロジェクトファイルをオープンしようとした時点で、同時に、CVS サーバへの接続が起こりますが、このときのユーザ ID は、ローカルコピーを作成したときのユーザ ID magic が使われます。
ユーザ ID magic2 で接続することはできません。
このような問題を避けるために、同一 PC 上であっても、異なった開発者が異なったログイン ID でログインする場合には、それぞれに別のローカルコピーを作る必要があります。

CVS を使ったバージョン管理12誤った例②： 開発者①が作成したローカルコピーを、別のユーザ ID の開発者②が修正しようとする。

Magic Studio V10
開発用 PC ①
RDWINXP2

CVS サーバ
RDWINXP1

CVS リポジトリ
eDevDB
開発者①
ID: magic

magic さん専用
ローカルコピー
MyProject

開発者②
ID: magic2

CVS を使ったバージョン管理13

1.5. 一般的注意事項
Magic Studio でバージョン管理を行う上での一般的な注意事項として、次のようなことがあります。
z

チーム開発は行いたいが履歴管理は必要ない、という場合でも、バージョン管理ソフト(CVSやVisual
SourceSafe)の利用は必須となります。履歴管理が必要ないからと言って、バージョン管理ソフトを利用せずにプロジェクトファイルを共有するような使いかたはできません。1.4誤った使い方の例 を参照
してください。

z

CVS で管理されているプロジェクトのファイルは XML のテキストファイルなので、一般のテキストフ
ァイルの差分ツールやテキストエディタで直接編集することは可能ですが、リポジトリの定義は相互に複雑な関連を持っているので、手作業での編集を正しく行うのは困難です。最悪、Magic Studio で読めなくなってしまうというリスクを伴うので、自己責任において行うようにしてください。

z

Magic Studio は、プロジェクトのリポジトリを形成する XML ファイルのみをバージョン管理の対象とします。環境ファイルなど、プロジェクト以外のファイルもバージョン管理したい場合は、CVS のユーティリティ等を利用して、手作業でファイルを追加してください。

CVS を使用してバージョン管理を行う場合、以下のどちらかの条件が必要です。
¾ クライアントの OS に対して Power User 以上の権限を持ったユーザでログインする。
¾ 以下のフォルダにフルコントロールの権限を割り当てる。
 CVSDB のフォルダ(デフォルトでは C:\Program Files\cvsnt\db) CVS の一時フォルダ(デフォルトでは C:\Program Files\cvsnt\TEMP)z CVS クライアントを Magic Studio のインストール処理とは別に行う場合、Magic Studio のインスト
ールフォルダ内に「cvs_client」サブフォルダを作成し、以下のファイルをコピーしてください。
¾ cvs.exe¾ expat.dll¾ iconv.dll¾ igloo.dll¾ pserver_protocol.dllz

CVS を使ったバージョン管理14

2. CVSのインストール
Magic Studio で CVS を使ってバージョン管理を行うには、それぞれの PC 上で、Magic Studio のほかに
CVS のインストールを行っておく必要があります。
ここでは、Magic Studio 製品にバンドルされている CVS をインストールする手順を簡単に説明します。

2.1. Magic Studioと共にインストールする場合
バンドルされている CVS は、Magic Studio のインストールを行う際に、インストールコンポーネントとして選択することができます。
1.

2.

3.

Magic の イ ン ス ト ー ラ を 起 動 し ます。(CDROM のルートディレクトリ
にある Setup.exe を実行します)。
Magic Studio V10 を選択します。

使用許諾契約に同意すると、セットアップタイプを選択する画面が出ますので、「カスタム」を選びます。

CVS を使ったバージョン管理

15

4.

インストール先のフォルダを選択します。

5.

バ ン ド ル 製 品 か ら CVS を 開 き 、
CVS クライアント、CVS サーバ共に選択します。

6.

何画面か進んだ後、CVS の設定の画面が出ます。ここでは CVS リポジト
リを作成する位置を指定します。
Magic の イ ン ス ト ー ル プ ロ グ ラ ム
は、CVS サーバに対して eDevDB というリポジトリを定義します。

このフォルダには、CVS サーバを使用するユーザに対して更新できる権利を設定しておく必要があります。
CVS のリポジトリは、ローカルハードディスク上にのみ作成することができます。ネットワークドライブには作成することができません。
7.

インストールを開始し、Magic Studio のインストールが進んだところで、CVS クライアントインストール開始のダイアログが出ますので、「はい(Y)」を選んでください。

CVS を使ったバージョン管理

16

8.

続いて、CVS サーバのインストール開始のダイアログが出てきますので、「はい(Y)」を選んでください。

9.

License Agreement の承諾、およびインストールフォル
ダの選択画面の後、Select Components の画面が出てきますので、 Typical installation を選択してください。

10. Select Start Menu Folder 画 面 の 後 に 、 SelectAdditional Tasks 画面が出ますので、すべてチェックしてください。

以上で、CVS のインストールが終了します。
引き続き、Magic のインストールの残りの部分が行われていきますので、最後まで行ってください。

CVS を使ったバージョン管理17

2.2. CVS サーバのみをインストールする場合
共有サーバマシンに CVS サーバのみをインストールする場合には、Magic のインストーラから Componentのインストールを選択します。
1.

Magic の イ ン ス ト ー ラ を 起 動 し ます。(CDROM のルートディレクトリ
にある Setup.exe を実行します)。

2.

Component を選択します。

3.

使用許諾契約の同意と、インストー
ル先のフォルダ選択の画面の後、コンポーネントの選択画面が表示されますので、バンドル製品 から CVS
サーバ を選択してください。CVS ク
ライアントは必要ありません。

4.

CVS の設定画面が出てきます。

これ以降は、前節 2.1Magic Studioと共にインストールする場合 のステップ６以降と同じですので、そちらを参照してください。

CVS を使ったバージョン管理18

3. Magic Studio V10 でCVSを使用する
本章では、CVS をバージョン管理システムとして使って Magic Studio V10 でプロジェクト開発を行う場合の手順を簡単に説明します。
なおここでは、プロジェクト全体に対する以下の操作を CVS を使って行う操作方法についてだけ説明してい
ます。
z
z
z

新規プロジェクトの作成
既存の Magic プロジェクトを CVS サーバに追加
既存の CVS リポジトリから Magic プロジェクトを取得

プロジェクトを開いた後の各リポジトリやプログラムに対する以下の操作については、Microsoft Visual
SourceSafe を使った場合と基本的に同じです。
z
z
z
z
z
z
z
z

チェックアウトチェックイン
アンチェック
最新プロジェクトの取得
最新バージョンの取得
履歴
差分
オフラインモード作業

これらについては、リファレンスヘルプの［ソース管理］の項を参照するか、あるいは、オンラインドキュ
メント「MSVSS によるバージョン管理」の 5 章「バージョン管理の基本操作」、6 章「オフラインモード
作業」を参照してください。

CVS を使ったバージョン管理19

3.1. 新規プロジェクトの作成
新規プロジェクトを CVS サーバに登録するには、［ファイル］メニューの［新規プロジェクト］を選択します。ここでは以下の設定を仮定しています。適宜実際の設定値に置き換えて読んでください。
設定新規作成する Magic のプロジェクト名
Magic Studio を使う PC のホスト名
Windows のログインユーザ ID
CVS リポジトリのあるサーバ名
CVS リポジトリ名

値
MyProject
RDWINXP2
magic
RDWINXP1
eDevDB

Magic Studio V10
開発用 PCRDWINXP2

CVS サーバ
RDWINXP1

開発者ユーザ ID：
magic

新規作成

MyProject
プロジェクトファイル
個人用ローカルコピー

1.

［新規プロジェクト］ダイアロ
グで［プロジェクト名］として
MyProject を指定し、［バージョン管理データベースに新規プ
ロジェクトを作成します］のチェックボックスをチェックして、OK ボタンを押します。

2.

［バージョン管理プロジェクトの作成］ダイアログが出てきますので、使用する CVS サーバ名とリポジトリ名を指定して OKをクリックします。

チェックイン

CVS リポジトリ
eDevDB

MyProject

新規作成

参考： CVS サーバのインストールの際に、デフォルトで「eDevDB」という名前のリポジト
リが作成されています。
CVS を使ったバージョン管理

20

3.

CVS ク ラ イ ア ン ト を 通 し て
CVS サーバにログオンします。
このとき、現在の Windows ロ
グインユーザのパスワードが要求されますので、入力してくだ
さい。
参考： CVS サーバへの接続を行うたびに、CVS サーバに接続するためのパスワードを入力する必要があります。

4.

プロジェクトの作成時には最高
3 回までパスワードの入力が求められます。

5.

Magic のソースファイルがバー
ジョン管理プロジェクトに追加されている間、CVS の実行中のウィンドウが表示されます。

エラーなどなく終了したら、プ
ロジェクト MyProject のローカ
ルコピーが作成され、同じ内容のものが CVS リポジトリにも作成されました。初期状態では、リポジトリはすべてチェックイ
ンされている状態です。

CVS を使ったバージョン管理21

3.2. 既存のMagicプロジェクトをCVSサーバに追加する
次に、他の開発用 PC 上の他の開発者 magic2 が、開発作業に参加するため、CVS サーバにすでに作成されているプロジェクトから、自分のローカルハードディスクにコピーを作成することを考えて見ます。ここでは、以下の設定を仮定しています。
設定
既存の Magic のプロジェクト名
Magic Studio を使う PC のホスト名
Windows のログインユーザ ID
CVS リポジトリのあるサーバ名
CVS リポジトリ名

Magic Studio V10
開発用 PCRDWINXP2

CVS サーバ
RDWINXP1

開発者ユーザ ID：
magic

MyProject2

チェックイン(コピー作成)プロジェクト
ファイル
（既存）
1.
2.

値
MyProject2
RDWINXP2
magic
RDWINXP1
eDevDBCVS リポジトリ
eDevDB

MyProject2

新規作成

既存のプロジェクト MyProject2 を開きます。
［ファイル］メニューから［バージョン管理］サブメニューを選択し、［VC サー
バに追加する］を選択します。

CVS を使ったバージョン管理

22

3.

［バージョン管理プロジェクトを作成する］ダイアログが表示されます。以下を指定して、OK を押します。
z CVS サーバのホスト名 ：RDWINXP1z CVS リポジトリ名 ： DevDB

4.

パスワードを 2 回聞いてきますので、それぞれパスワードを入力します。

エラーなどなく終了したら、プロジェク
ト MyProject2 と同じ内容のものが CVS
リポジトリに作成されます。初期状態では、リポジトリはすべてチェックインされています。

CVS を使ったバージョン管理23

3.3. 既存のCVSリポジトリからMagicプロジェクトを取得
次には、他の開発用 PC 上の他の開発者 magic2 が MyProject プロジェクトの開発作業に参加するため、CVS サーバにすでに作成されているプロジェクトから、自分のローカルハードディスクにコピーを作成する
ことを考えて見ます。ここでは、以下の設定を仮定しています。
設定
CVS より取得する Magic のプロジェクト名
Magic Studio を使う PC のホスト名
Windows のログインユーザ ID
CVS のリポジトリのあるサーバ名
CVS のリポジトリ名

値
MyProject
RDWINXP3
magic2RDWINXP1
eDevDB

Magic Studio V10
開発用 PCRDWINXP3

CVS サーバ
RDWINXP1

開発者ユーザ ID：
magic2MyProject
コピー
作成

ファイルの取得

MyProject

プロジェクトファイル

1.

プロジェクトがまだオープン
されていない状態で、［ファイル］メニューから［バージョン管理］サブメニューを開き、［サーバから開く］を選択します。［サーバから開く］ダイアログが表示されます。

2.

使用する VC サーバ名とリポ
ジトリ名を入力します。
［バージョン管理プロジェク
ト］の横の［参照］ボタンを
押します。

3.

CVS リポジトリ
eDevDBCVS を使ったバージョン管理

24

4.

パスワードを聞いてくるので入力します。

5.

指定した CVS リポジトリに現在格納されているプロジェク
トの一覧が表示されますので、取得したいプロジェクト
名 MyProject を選択し、［選択］ボタンを押します。

6.

［バージョン管理プロジェク
ト］欄に、選択したプロジェ
クト名が設定されるので、［OK］ボタンを押します。

7.

再度パスワードを聞いてきたら、パスワードを入力してください。

エラーなどなく終了したら、CVS リポジ
トリにある MyProject のローカルコピーが作成され、オープンされます。
初期状態では、リポジトリはすべてチェ
ックインされています。

CVS を使ったバージョン管理25

4. CVSNTサーバの環境設定
本章では、CVS for NT ユーティリティを用いて、CVS リポジトリの追加、修正を行う方法を説明します。

4.1. CVS リポジトリの追加
Magic のインストーラは、CVSNT サーバをインストールする際に、eDevDB という名前のデフォルトのリ
ポジトリを作成します。
これ以外のリポジトリを作成したいときには、CVS for NT ユーティリティを使用します。
ここでは、以下の設定で新しく CVS リポジトリを作成することを考えてみます。
設定
CVS リポジトリを作成するフォルダ名
新規に作成する CVS リポジトリ名

値
C:\MJ\PetshopDB/MJ/PetshopDB

CVS リポジトリを作成するフォルダ名には、CVS サーバを利用するユーザに更新権が設定されている必要があります。

1.

CVS for NT ユーティリティを開くには、［コントロールパネル］から［CVS for NT］をクリッ
クします。

2.

または、プログラムメニューの「CVSNT」の［Service control panel］をクリックします。

CVS を使ったバージョン管理

26

3.

［Service Status］タブの［CVS Service］セクションで［Stop］をクリックします。

4.

［Repositories］タブに切り替え、［Add］ボタ
ンをクリックして［Edit Repository］ダイアロ
グを開きます。

5.

Edit Repository ダイアログが出るので、新しいCVS リポジトリのフォルダ名とリポジトリ名を入力し、［OK］ボタンを押します。

6.

［Location］欄に入力したフォルダが存在しな
い場合、フォルダを作成するかどうかを確認す
るダイアログが表示されます。「Yes」をクリックすると作成されます。

CVS を使ったバージョン管理27

フォルダがすでに存在している場合、初期化するかどうかを確認するダイアログが表示されます。「Yes」をクリックすると初期化されます。

7.

作成処理が正常に行われた場合、［リポジトリ
一覧］に作成されたリポジトリが表示されます。

8.

［Service Status］タブの［CVS Service］セクションで［Start］をクリックするとサービスが再起動され、アクセスできるようになります。

CVS を使ったバージョン管理28

4.2. CVS リポジトリの削除
CVS リポジトリが不要になった場合には、削除することができます。このときにも、CVS for NT ユーティ
リティを使います。
1.

［コントロールパネル］から［CVS for NT］をクリックして、CVS for NT ユーティリティを起
動します。

2.

［Service Status］タブの［CVS Service］セクションで［Stop］をクリックします。

3.

［Repositories］タブをクリックし、削除しようとするリポジトリを選択してから、［Delete］
ボタンを押します。

CVS を使ったバージョン管理

29

4.

一覧からリポジトリが消えます。
参考

z

z

z

5.

［Delete］ボタンを押しても、登録が削除されるだけで、実際のフォルダやファイルは削除されていません。
万一間違えて Delete してしまった場合には、［Add］ボタンを押して Edit Repository ダイア
ログで指定することにより、復活させることができます。
不要であれば、エクスプローラなどから直接フォルダやファイルを削除してください。

［Service Status］タブの［CVS Service］セクションで［Start］をクリックして、CVS サーバを再起動してください。

CVS を使ったバージョン管理30

5. CVS利用時のベストプラクティス
CVS を Magic のバージョン管理ソフトウェアとして利用しチーム開発するときには、スタンドアロンで開発するときとは異なる考慮点が必要になります。ここでは、CVS を使ってチーム開発する際の注意事項について説明します。

チェックアウトの単位
リポジトリやプログラムをチェックアウトするときには、対応する XML ファイルを排他的にロックする必要があります。即ち、同一リポジトリや同一プログラムを二人以上の開発者が同時にチェックアウトすることはできません。
チェックアウトの単位は、以下の通りです。
z 各リポジトリ単位 (モデル、データ、プログラム、ヘルプ、権利、メニュー、コンポーネント)
z 個々のプログラム単位
z アプリケーション特性

各リポジトリ単位のチェックアウト
各リポジトリ単位のチェックアウトは、プロジェクト全体に影響を及ぼす操作ですので、変更は慎重に行ってください。具体的には、zzz

誰か一人開発管理者をたてて、その人だけが修正を行うようにしてください。
チェックアウトする前に、個々のプログラムも含め、すべてのオブジェクトがチェックインされていることを確認してから行ってください。
修正してチェックインしたら、全ての開発者がその修正を反映するように、できるだけ早くに［最新バージョンの取得］(各リポジトリが単位)、あるいは［最新プロジェクトの取得］(プロジェクト全体が対象)を実行してください。

データリポジトリやモデルリポジトリにおいて、CVS リポジトリの内容とローカルコピーの内容に相違がある状態でプログラム等の開発を続けると、チェックインや最新バージョンの取得を行ったときに矛盾が起こる可能性があります。

個々のプログラムのチェックアウト
個々のプログラムの修正は、別のプログラムである限り、同時に複数の開発者が開発を行うことができます。
プログラム開発時には、次のようにしてください。
zzzプログラムの追加、削除、移動(フォルダの変更による移動も含む)などの操作は、プログラムリポジト
リ全体のチェックアウトが必要となる操作で、プロジェクト全体に影響を及ぼすものとなるので、チーム開発作業中は極力避けるようにすべきです。
このために、開発管理者が予め、各開発者が必要とするプログラム数を見積もっておき、空のプログラ
ムを作成して、各開発者が担当するプログラム番号の範囲を決めておきます。
各開発者は、自分に割り当てられたプログラム番号の範囲のプログラムのみをチェックアウト、修正、CVS を使ったバージョン管理31

チェックインするようにします。
こうすることにより、チェックアウトの衝突の可能性がなくなり、また、プロジェクト全体に影響を及ぼす
可能性のある操作を極力排除することができ、ロックの衝突による作業中断や、プロジェクトの安全性を確保することができるようになります。

コメント
チェックインするときに、コメントを記述することができます（右図）。
コメントの内容は自由ですが、目的や修正内
容、関連する他のリポジトリへの影響や、同時に修正したオブジェクトなどについて記録しておくとよいでしょう。

このコメントは、CVS のリポジトリに修正履歴として記録されます。Magic Studio で、［ファイル］→［バージョン管理］→［履歴(H)］メニ
ューで履歴を表示させると、コメントも表示されます。
コメントを適切に使うことにより、誰がいつどういう目的のために何を修正したのか、それによる波及や関連オブジェクトなどがわかり、プ
ロジェクトの管理がより的確にできるようになります。

バックアップ
定期的なプロジェクトのバックアップは、バージョン管理の利用の有無に関わらず、必ず励行しておきたいことです。

ロールバック
万一、なんらかの原因によるリポジトリ定義内容の矛盾が起こってしまった場合には、バージョン
管理ソフトの「ロールバック」の機能を使って、以前の世代の状態に戻すことができます。バージ
ョン管理の［履歴］を選ぶと、現在選択されているオブジェクトについての修正履歴が表示されますので、この中から戻したいバージョンを選択して［取得(G)］を押します。

CVS を使ったバージョン管理

32

Magic V10 では、各リポジトリやプログラムは、テキストの XML ファイルであるため、テキストエディッタで修正することが可能ですが、手作業で編集すると、そのリポジトリ定義についての動作を保証することができなくなります。Magic のリポジトリは相互に複雑な関連を持っていることが多く、手作業の修正は矛盾をきたす可能性があるからです。最悪の場合には、リポジトリやプログラムが Magic Studio で読めなくなってしまうこともあります。
過去のバージョンにロールバックを行う場合には、その間に他のリポジトリの修正が入っていると、関連性に矛盾が生じる可能性があります。必ず関連するオブジェクトの履歴をチェックした上で行うようにしてください。

オフライン作業
Magic Studio V10 では、CVS などのバージョン管理ソフトウェアに接続せずにプロジェクトを変更できる、「オフライン作業」が可能となっています。これにより、CVS サーバにアクセスできない環境でも、開発を続けることができます。
オフライン作業中は、CVS の共有リポジトリと接続しないでプロジェクトを変更するので、他の開発者のチェックイン状態がわからないため、排他制御がかかりません。また、リポジトリやプログラムに対する変更の同期をとることができません。変更の同期は、CVS サーバに再接続できるようになった時点で、Magic
Studio が極力自動的に行いますが、お互いの変更点が多いと、自動的に同期をとることができなくなることがあります。
この問題を避けるために、オフライン作業を行う場合には極力開発者間の作業が干渉しないような形での修正のみに限定すべきです。具体的には、次のようなことに留意してください。
zzz

プロジェクト全体に影響を与える、リポジトリ単位での修正は行わないでください。特に、モデルリポ
ジトリやデータリポジトリの修正はデータの矛盾の原因となるので行うべきではありません。
同じプログラムを別の開発者が修正しないように、各開発者ごとに修正してよいプログラムの範囲を決めてください。
どうしてもその範囲外のプログラムを修正しなければならない場合には、上書きコピーにより自分の範囲内にコピーするか、あるいは、電話等で他の開発者と良く連絡をとりながら行うようにしてください。

WANを介したチーム開発
CVS はインターネットなどの WAN を介した操作を行えるように設計されています。技術的には、TCP/IPの接続できる環境であれば、LAN であっても WAN であっても、CVS を使ってチーム開発が可能です。
しかし、プロジェクトの安全性を考えると、信頼性の高いネットワーク環境で行うことが重要です。また、チェックインやチェックアウトのときには多くのデータのやりとりが起こるので、回線速度も作業効率に影響する要素となります。
このような点を考慮すると、チーム開発は基本的に高速で信頼性の高い LAN ネットワーク環境で行うことを強くお勧めいたします。

CVS を使ったバージョン管理33

6. その他の注意事項
ここでは、前節までに説明していなかった、細かな注意事項等について簡単に挙げます。

ユーザ認証について異なるマシンから同じユーザで同じプロジェクトにログオンしても動作は可能ですが、次のような理由から避けるべきです。
z 履歴やチェックアウト一覧等で同じユーザ名が表示されるため、どのマシンでチェックアウトされたものか判断できません。
z チェックインするときはチェックアウトされたマシンからしか行えません。
z 一方のマシンでチェックアウト状態のオブジェ
クトがあるときに、他方のマシンでチェックイ
ンすると、右図のようなエラーが出ることがあります。

クリティカルなタイミングで同時チェックアウトできてしまう現象
同時に複数のクライアントから同じオブジェクトをチェックアウトしようとしたとき、通常は、チェッ
クアウト時に警告のダイアログが出て、同時にチェックアウトされることを防ぎます(右図)。
しかしクリティカルなタイミングで、ダイアログが出ないで 2 つ以上のクライアントでチェックアウト
できるときがあることが知られています。
また、タイミングによっては、右図のような警告ダ
イアログが出ることもあります。このときに、［はい(Y)］のボタンを押すと、チェックアウトの動作が継続され、複数のクライアントでチェックアウトされた状況になります。
これらの問題を回避するには、開発者側で同じオブジェクトにチェックアウトしないルールを決めてもらうのがベストです。第5章CVS利用時のベストプラクティスを参照してください。

自動的にチェックアウト状態になる場合
zzプログラムリポジトリで「最新バージョン取得」を実行し、同時に「プログラムの最新バージョンを取得」したとき、新規に取得されたプログラムが常にチェックアウトされた状態になっています。この操作によって読み込まれてきたプログラムは一旦チェックインするか、アンチェックするようにしてください。
CVS に接続したプロジェクトをオフラインで修正後、再接続時にアクションなしでオープンすると、オフラインで修正されたまま、チェックアウトされています。このプログラムも一旦チェックインするか、アンチェックするようにしてください。

チェックアウト時のコメント入力
チェックアウト時、コメント入力のダイアログが出てきますが（右図)、実際にはこの時点でコメントを入力することはできません。チェックインの時に同じダイアログが表示されますが、このときにコメントを入力することができます。

CVS を使ったバージョン管理

34

CVSリポジトリについて
CVS リポジトリは、CVS サーバをインストールしたマシンのローカルのディスクにのみ作成可能です。ネットワークドライブを経由してリポジトリを作成することはできません。
開発PC以外のPCにリポジトリを配置したい場合には、そのマシンにCVSサーバをインストールする必要があります。1.2.1専用サーバを使う形態 を参照してください。

CVS を使ったバージョン管理

35

CVS を使用したバージョン管理
Copyright © 2007, Magic Software Japan K.K.,
All rights reserved.

第1版
発行

2007 年 7 月 6 日〒151-0053 東京都渋谷区代々木三丁目二十五番地三号
あいおい損保新宿ビル 14 階マジック ソフトウェア・ジャパン (株)http://www.magicsoftware.co.jp/