2011年2月18日金曜日

VersionControl_SVN 再帰リスト 大嘘

VersionControl_SVN 再帰的フォルダリストの取得の説明を検索すると、
マニュアルの日本語訳?が出てくるけど、
そのコード
「リポジトリ内の現在のファイル一覧を再帰的に取得する」
require_once 'VersionControl/SVN.php';

// エラー処理を設定します -- 常にこのようにしておきましょう!
$svnstack = &PEAR_ErrorStack::singleton('VersionControl_SVN');

// 実行時オプションを設定します
$options = array('fetchmode' => VERSIONCONTROL_SVN_FETCHMODE_RAW);

// 方法その 1: オーバーヘッドを最小にする
// 必要なサブコマンドを個別に指定して svn オブジェクトを作成します
$svn = VersionControl_SVN::factory(array('list', 'log', 'blame'), $options);

// 必要なスイッチや引数を定義します
$switches = array('username' => 'user', 'password' => 'pass');
$args = array('svn://svn.example.com/repos/TestProject');

print_r($svn->list->run($args, $switches));

// 上の出力からファイルを取り出し、だれが何をしたのかを調べます
$args = array('svn://svn.example.com/repos/TestProject/trunk/index.php');

echo "<pre>" . $svn->blame->run($args) . "</pre>";

// 方法その 2: 使用できるすべてのコマンドを支配する
// 全サブコマンドを読み込む - オーバーヘッドが大きくなりますが、これが便利な場合もあるでしょう。
$svn = VersionControl_SVN::factory('__ALL__', $options);

// さあ、必要なコマンドはなんでも実行できます ...
$svn->cat->run($args, $switches);
$svn->info->run($args, $switches);
// ... などなど。
これじゃ、できません!!
できないソースを単純に訳しただけのページの多いこと多いこと、
まあ、悪いことじゃないけど、実際にやろうとする人は惑わされます
$switches = array('username' => 'user', 'password' => 'pass','R' => true);
にします。

0 件のコメント:

コメントを投稿