Subversionを使用したバージョン管理: 単一ユーザー・プロジェクトのためのリポジトリの作成オープン・ソースのバージョン管理システムであるSubversionを使用して、単一ユーザー環境およびチーム環境 においてOracle JDeveloper 11gプロジェクトを管理する方法について学習します。 この記事で は、リポジトリを作成し、単一ユーザー環境でSubversionによるバージョン管理を開始する方法について説明します。 John Stegeman著
2008年12月公開 ![]() 学生時代の期末レポートなど、ドキュメントの作成中に前のバージョンに戻れるよう、経過とともにいくつものコピーを保存していた記憶は ありませんか。 おそらく、プログラミング・プロジェクトでも同じように、ソース・コードを変更するたびに複数のコピーを保存した経験があるでしょう。そうすることで、何 かうまくいかなくなったときには以前の安定したバージョンに戻れるようにと。 このような経験をお持ちなら、原始的な形ではあれ、バージョン管理を利用した経験があるといえます。 ただし、きわめて重要性の低いプロジェクトでもない限り、この単純な手法はすぐに役に立たなくなります。 また、チーム・メンバー間で変更を共有しなければならない環境で作業しており、かつ、経過をたどる必要もあるため、この原始的な手法では不十分であること に気づくでしょう。 ずっと以前から、開発プロジェクトでは形式化した バージョン管理システムをベス ト・プラクティスとして使用してきました。 バージョン管理システムは、チームにはもちろん、個人にも以下の利点をもたらします。
開発者が1名しかいない単純なプロジェクトであっても、標準のバージョン管理システムを利用することで大きなメリットがあります。 この記事では、Oracle JDeveloper 11gで、一般的なバージョン管理システム(Subversion)を使用する方法について説明します。 Subversionを選ぶ理由現在では、無料のものと有料のものを合わせて、数多くのバージョン管理システムが提供されています。 いくつか例を挙げると、CVS、git、Microsoft Visual Source Safe、Perforce、Rational ClearCase、Serena Dimensionsなどがあります。 これらすべての選択肢からSubversionを選ぶ理由はなんでしょうか。 Oracle Application Development Framework(Oracle ADF)ベースのプロジェクトで、Subversionを選ぶ理由には、次のようなものがあります。
Subversionの概要バージョン管理システムによって使用される用語は異なり、リビジョン管理の手法が異なるケースもあるため、ここでは Subversionのおもな概念について確認していきます。 リポジトリは、Subversionがファイルや、経過に従ってそのリビジョンを格納するために使用する中央ロケー ションです。 gitなどのバージョン管理システムでは分散したリポジトリを提供していますが、Subversionは集中型のアプローチを採用しています。 作業用コピーは、リポジトリに含まれる一部の(またはすべての)ファイルのローカル・コピーであり、変更のためにリ ポジトリからユーザーのローカル・マシンへコピーされたものです。 リポジトリから作業用コピーを取得するプロセスを、"チェックアウト"と呼びます。 Subversionは、チーム環境での変更の取り扱いについて、コピー・修正・マージのパラダイムを使用します。 一部のバージョン管理システムでは、ロック・修正・ロック解除のパラダイムが使用されていますが、この場合、ユーザーはファイルを変更するためにロックを おこない、変更が終了したらロック解除をおこなう必要があります。 Subversionでもこの手法がサポートされていますが、通常、この手法はバイナリ(非テキスト)ファイルに対してのみ使用されます。 Subversionでは、複数のユーザーが同時に1つのファイルを変更できます。この場合、複数の変更はマージされます(自動または手動)。 Subversionの概念について、詳しくは 無償 のオンライン・ドキュメントをダウンロードしてください。 ソフトウェアのインストールとリポジトリのセットアップSubversionを使用してアプリケーションのリビジョン保管を開始する前に、リポジトリをセットアップし、リポジトリへのアクセ スを提供する必要があります。 Subversionでは、おもに、次の3つの方法を使用してリポジトリにアクセスします。
Oracle JDeveloperでは、ローカル・リポジトリの作成とfileプロトコル経由でのアクセスをサポートしていますが、この方法は、プロジェクトの開発者 が1名である場合を除いて、あまり実用的ではありません。 Subversionリポジトリへのもっとも一般的なアクセス方法は、Apacheを使用した、HTTP/HTTPSプロトコル経由のアクセスです。 リポジトリを作成して、Apache経由でアクセスできるようにセットアップするには、ソフトウェアのインストールと設定をおこなう必要があります。ま たは、既存のSubversionリポジトリへ接続します。 筆者が過去のOracle ADFプロジェクトで使用したことがあるSubversionの商用ホスティング・サービスでは、リポジトリの作成と管理をおこなうWebインタフェース が提供されます。このサービスを利用すると、ホスティング・プロバイダによってバックアップが処理されるだけでなく、多くの場合、問題追跡ソフトウェアと の統合も提供されるため、便利な選択肢と言えます。 独自のリポジトリを作成する場合、Subversionソフトウェアだけでなく、Apacheと所定のモジュールのインストールおよび 構成をおこなう必要があります。 Linuxは、多くの場合、SubversionとApacheの構成が完了した状態で配布されています。 Microsoft Windowsの場合、VisualSVNという企業からWindows用インストーラが提供されており、Subversionソフトウェア、構成済みの Apache HTTPサーバー、そして使いやすい管理コンソールがインストールされます。 もちろん、SubversionとApache HTTPサーバーを個別にインストールし、コマンドラインのリポジトリ管理ツールを使用してリポジトリを作成することもできますが、VisualSVN Server( www.visualsvn.com/server) を使用すると、簡単にSubversionの使用を開始できます。 VisualSVN Serverのインストールは非常に簡単であり、インストーラをダウンロードして実行するだけで完了します。 次に、重要なセットアップ部分のスクリーンショットを示します。ここでは、リポジトリを格納する場所、Apache HTTPサーバーのポート、Subversionサーバーがユーザー情報とグループ情報を取得する場所を指定します。 ここでは、HTTP(HTTPSではない)を使用したスタンドアロン・インストールに適切なオプションを指定しています。また、Windowsのユーザー とグループではなく、独自のユーザーとグループを使用しています。 インストールはわずかな時間で完了し、VisualSVN Serverという名前のWindowsサービスが作成されます。 インストールの最後に、VisualSVN Server Managerを起動するかどうかを選択できます。 VisualSVN Server Managerには、 Repositories、 Users、 Groupsの 3つのノードが表示されます。 ここでは、otnというリポジトリを作成します。「 Repositories」ノード を右クリックし、コンテキスト・メニューから「 Create New Repository...」を選択します。 Create New Repositoryダイアログ・ボックスにリポジトリ名を入力し、デフォルトのリポジトリ構造(詳しくは後述)を作成するためのチェック・ボックスに チェックを付けます。 これで、最初のSubversionリポジトリが作成されました。 VisualSVN Server Managerでotnリポジトリを開くと、"trunk"、"branches"、"tags"という3つのディレクトリが表示されます。 この3つのフォルダからなるトップレベル構造は、Subversionリポジトリを構造化する際によく使用されるものです。 別のトップレベル構造を使用することもできますが、Trunk・Branches・Tags構造は広く一般に使用されているため、この構造を使用すること をお勧めします。 次に、各ディレクトリの目的を示します。
複数ユーザーに対してSubversionがどのように機能するかを示すために、2名のユーザーを作成します。VisualSVN Server Managerで「 Users」ノードを右クリックしてから、「 Create User...」を選択します。 ここでは、johnとjosephineという名前を使用します。 リポジトリへのアプリケーションの追加(インポート)ここまでで、Subversionリポジトリの準備は整ったので、バージョン管理をおこなうアプリケーションを新規リポジトリに配置し ます(インポート・プロセス)。 Oracle JDeveloperが提供するGUIを使用すると、この作業はきわめて簡単に実行できます。 この記事では、シンプルなOracle ADF Fusion Webアプリケーションと2つの標準プロジェクト(Oracle ADFビジネス・コンポーネント用のModelとUI用のViewController)を使用します。同じ方法で作業をおこなう場合、この記事の最後に ある"Resources"セクションのリンクからアプリケーションをダウンロードして使用できます。 バージョン管理の対象アプリケーションを配置するには、アプリケーションがOracle JDeveloperで選択されていることを確認します。次に、Oracle JDeveloperの Versioningメ ニューから「 Version Application...」を選択します。 プロンプトが表示されたら、リポジトリ・タイプとして「 Subversion」を選択します。 Subversion接続をまだ定義していない場合、Oracle JDeveloperによって、Subversion接続を作成するためのプロンプトが表示されます。 すでにSubversion接続を定義している場合、リポジトリ接続のリストが表示され、ここから選択します。 ここでは、まだ接続を定義していないため、Oracle JDeveloperによって接続の作成を促すプロンプトが表示されます。 Subversion接続を作成するには、リポジトリURLを知っておく必要があります。 VisualSVN Server ManagerからURLを取得するには、リポジトリを右クリックして、コンテキスト・メニューから「 Copy URL to Clipboard」を選択します。 次に、このURLをOracle JDeveloperのダイアログ・ボックスに貼り付けます。 ユーザー名とパスワードを入力したら、「 Test Read Access」をクリックして設定が正しいことを確認し ます。 アプリケーションのインポートにおける次のステップとして、リポジトリ内のどのディレクトリにアプリケーションを格納するかを指定しま す。 Subversionリポジトリの一般的なレイアウトについてすでに説明したとおり、開発のおもな作業をおこなう場所はtrunkディレクトリです。した がって、ここにアプリケーションをインポートします。 次のステップでは、アプリケーションのソース・ディレクトリがローカル・ディスク上のどこにあるかを指定します。通常、Oracle JDeveloperではこの情報が正しく取得されるため、ユーザーが変更する必要はありません。 Subversionリポジトリに対して何らかの作業をおこなう際は、常に、実行した内容に関するコメントを残すことをお勧めします。初回のアプリケー ション・インポートも例外ではありません。あとで参考になるコメントを入力しておきましょう。 インポートの次のステップでは、除外したいファイルおよびディレクトリをSubversionで指定します。 通常、生成されたファイル(クラス・ファイルなど)や一時ファイルなどはSubversionリポジトリに格納しないため、Subversionでこれら のファイルを指定します。 詳しいメカニズムについての説明は省略しますが、簡単にいうと、Subversionは特殊なプロパティを使用して、除外すべき対象を特定します。 Oracle JDeveloperでは、デフォルトの除外パターンとして適切なセットが提供されますが、Filtersダイアログ・ボックスを使用して、独自のフィル タを追加することもできます。 Subversionにアプリケーションをインポートしても、ローカル・ディスク上のオリジナル・ファイルは一連のローカル・ファイル のままで変わりなく、ローカル・コピーとリポジトリが接続しているわけではありません(ローカル・コピーはSubversionの"作業用コピー"ではあ りません)。 通常は、アプリケーションをインポートしたあとにローカル・コピーを削除して、リポジトリから作業用コピーをチェックアウトします。 Oracle JDeveloperのOptionsダイアログ・ボックスでは、これをインポートと同時におこなうためのチェック・ボックスを選択できます。 次に、インポート・オプションのサマリーを確認し、インポートを完了します。 Oracle JDeveloperのSVN Console Logウィンドウに、インポート・プロセスの進捗が表示されます。 インポートが完了したら、チェックアウト処理の進捗が表示されます(インポート後にチェックアウトを自動実行するチェック・ボックスにチェックを付けた場 合)。 チェックアウトが終了したら、Application Navigatorを確認します(はじめに、リフレッシュ・アイコンをクリックする必要があります)。 次に示すとおり、多くの情報が追加されたことが確認できます。
ローカルでの変更とSubversionへのコミットここまでで、アプリケーションのローカル・コピーは、Subversionの"作業用コピー"となりました。言い換えると、このコピー は、Subversionリポジトリに関連付けられています。 次に示すとおり、Subversionは、作業用コピーの隠しディレクトリである.svnを使用して、この関係を維持します。 .svnディレクトリの中身は、Subversionによって自動的に維持されるため、変更しないでください。 ここまでで、アプリケーションはバージョン管理の制御下におかれました。次に、アプリケーションに変更を加えて、Subversion リポジトリに保存してみましょう。 Modelプロジェクトの Regionsエンティティ・オブジェクト(EO)の チューニング・プロパティを変更して、更新をバッチ化するように設定します。 変更をおこなってEOを保存したら、Oracle JDeveloperにいくつかの変更が反映されていることを確認します。 まず、 Regions EOのステート・オーバーレイ・アイコンがアスタリスクに変わっており、Subversionリポジトリに保存("コミット")されていないローカル変更 があることが分かります。 次に、Subversionの Pending Changesウィンドウを確認します。 先ほど変更したRegions.xmlファイルが、Outgoing変更としてリストに表示されています。 Pending Changesウィンドウは、現在のアプリケーションのうち、作業用コピーで変更 されたファイル(Outgoing)や、作業用コピーで作成され、Subversionへ追加されていない新規ファイル(Candidates)を確認で きるだけでなく、別のユーザーによってSubversionリポジトリに加えられ、まだ作業用コピーに適用されていない変更(Incoming)を確認で きる便利な場所です。 ここでは、このアプリケーションの作業をおこなっている開発者は1名であるため、Incoming変更は存在せず、Outgoing変更が1つだけ表示さ れています。 次に、 Employees EOと Jobs EOのチューニング・プロパティに同じ変更を加えて、プロジェクトへの変更を完了します。 作業が終了したら、ステート・オーバーレイ・アイコンと Pending Changesウィンドウに、3つのファイルのローカル変更がコミットされていないことが反映されます。 ここまでで、変更が完了し、リポジトリへコミットする準備が整いました。 ここでは、Application Navigatorのショートカット・メニューを使用して、作業用コピーにおけるすべての変更をコミットします。 「 Commit Working Copy...」を選択すると、Oracle JDeveloperのプロンプトが表示され、コメントを入力するよう求められます。 すでに説明したとおり、プロジェクト・チームが一見して変更の内容を把握できるように、常に、役に立つコメントを入力します。 変更がコミットされると、 SVN Console - Logにその内容が表示されます。 また、ステート・オーバーレイ・アイコンが円形に戻り、コミットされていないローカル変更はないことが分かります。 コミットしたファイルのバージョン番号が増加し、ファイルはバージョン3の段階にあることが分かります。 Pending Changesウィンドウに表示されるOutgoing変更はありません(すべて のローカル変更をコミットしたため)。 結論この記事では、Oracle JDeveloper 11gの単一ユーザー環境でSubversionを使用するための、基本的な情報について説明しました。 このシリーズの次の記事では、プロジェクトに別の開発者が加わって同時に変更をおこなった場合、どのような変化が起きるのかについて確認していきます。 関連情報
John Stegeman( http://stegemanoracle.wordpress.com) はOracle Fusion MiddlewareのOracle ACE Directorであるとともに、BPOサービスとITサービスを提供するグローバル企業であるCambridge SolutionsのEMEA地域を担当するプリンシパル・アーキテクトです。 Oracle製品との関係は1990年から続いており、Oracle JDeveloperにはバージョン3から携わっています。 |
||||||||||||||||||||||||||||||||||||||||||||||||
|