VersionControl_SVN は、svn コマンドライン アプリケーションのシンプルなオブジェクト指向インターフェースです。 svn は、フリー/オープンソースのバージョン管理システムである Subversion の中核となるものです。
Subversion は、ソースコードのツリー・テキストファイル・画像ファイル -- およそ考えうるあらゆる形式のファイルを 管理するために使用可能です。
VersionControl_SVN の機能には以下のようなものがあります。
svn サブコマンドの完全なサポート。
PEAR_ErrorStack による柔軟なエラー報告。
複数オブジェクトによるファクトリデザイン。
完全にドキュメント化されたソースコード。
たとえば、バージョン管理機能の恩恵をうけないコンテンツ管理システム (CMS)がどこにあるというのでしょうか? プログラマでない多くの人々に とっても、バージョン管理は頭を悩ませる問題です。 VersionControl_SVN を使用することで、特定のユーザを念頭において 彼らが使いやすいように Subversion のインターフェースをカスタマイズ することが可能となるのです。VersionControl_SVN により、エンドユーザに 変更管理の概念を覚えさせるという負担を強いずに、強力なバージョン管理機能を 使用させることができます。
まずどこかに Subversion リポジトリを作成してください。PHP スクリプトで どのように書けばよいのかを知りたいことでしょう。数行後に、 VersionControl_SVN::VersionControl_SVN_List() コマンドを使用する例を 示します。
例 65-3 Subversion リポジトリの内容を読み込む
|
上で使用したリポジトリにもし VersionControl_SVN のソースが 格納されていれば、この例の出力は以下のようになります。
Array
(
[0] => Array
(
[name] => docs
[type] => D
)
[1] => Array
(
[name] => package.xml
[type] => F
)
[2] => Array
(
[name] => SVN.php
[type] => F
)
[3] => Array
(
[name] => SVN
[type] => D
)
[4] => Array
(
[name] => tests
[type] => D
)
) |
上の出力例で、ディレクトリには D、ファイルには F というフラグが立っていることに注意しましょう。
注意 出力に関する詳細情報はを得るには、配列 $options で verbose に TRUE を設定します。
VersionControl_SVN のサブクラスを利用する必要のあるスクリプトは ありませんか? ほんの少しのオーバーヘッドという犠牲を払うことで、 $svn オブジェクトに全機能を読み込むことが できます。VersionControl_SVN::factory() コマンドを使用し、 キーワード __ALL__ を指定すればよいのです。
たとえば、リポジトリ内の現在のファイルの一覧を取得したいなら、 必要なのはサブクラス VersionControl_SVN::VersionControl_SVN_List() だけです。
例 65-4リポジトリ内の現在のファイル一覧を取得する
|
しかし、もしリポジトリ内のファイル一覧を再帰的に取得し、 それらのファイルの更新ログを検索し、注記つきのソースを表示したいと なると、二通りの方法があります。
例 65-5リポジトリ内の現在のファイル一覧を再帰的に取得する
|
Subversion についてもっと知りたくなったなら、以下を参照ください。
Version Control with Subversion - 一般的な使用法からリポジトリの管理まで、 Subversion に関するあらゆる事項を扱っているリファレンスマニュアルです。
Subversion Web サイト - Subversion の公式 Web サイトでは、FAQ やメーリングリスト、 そしてもちろん Subversion のソースコードを扱っています。 また、GUI の Subversion アプリケーションへのリンクもあります。