関数・クラス解説

svn_diff

version:PECL svn >= 0.1.0 (公式)

ふたつのパスの差分を再帰的に取得する

公式リファレンス

書式

svn_diff ( string $path1 , int $rev1 , string $path2 , int $rev2 ) : array

説明

ふたつのパス path1 および path2 の差分を再帰的に取得します。

注意:

汎用的な diff ツールとは異なり、 バージョン管理の対象になっているローカルファイルしか差分取得の対象となりません。 その他のファイルの差分は取得できません。

パラメータ

path1
最初のパス。SVN リポジトリのファイル/ディレクトリを指す URL、 あるいはローカルのファイル/ディレクトリのパスのいずれかとなります。
注意: 相対パスは、PHP バイナリが存在するディレクトリを基準として解決されます。呼び出しもとのスクリプトの作業ディレクトリを基準とするには、realpath() あるいは dirname(__FILE__) を使用してください。
警告 ローカルファイルのパスを指定する際に、 バックスラッシュのみを使用して通常のスラッシュが存在しない場合は、 パスの検出に失敗してしまいます。この関数を使う際には、 バックスラッシュをすべてスラッシュに置き換えるようにしましょう。
rev1
最初のパスのリビジョン番号。最新のリビジョンを指定したい場合は SVN_REVISION_HEAD を使用します。
path2
もうひとつのパス。詳細は path1 の説明を参照ください。
rev2
もうひとつのパスのリビジョン番号。詳細は rev1 の説明を参照ください。

返値

ふたつのストリームの内容を含む配列のリストを返します。 最初のストリームが diff の出力で、もうひとつはエラー出力です。 このストリームを読み込むには fread() を使用します。エラーが発生した場合は FALSE あるいは NULL を返します。 デフォルトでは、diff の出力は Subversion 版の unified diff 形式となります。しかし、Subversion の設定によっては » 外部の diff エンジン を使うこともできます。

注意

警告この関数は、実験的 なものです。この関数の動作・名前・その他ドキュメントに書かれている事項は、予告なく、将来的な PHPのリリースにおいて変更される可能性があります。この関数は自己責任で使用してください。警告 ローカルファイルのパスを指定する際に、 バックスラッシュのみを使用して通常のスラッシュが存在しない場合は、 パスの検出に失敗してしまいます。この関数を使う際には、 バックスラッシュをすべてスラッシュに置き換えるようにしましょう。

サンプル

例1 基本的な例

ここでは、この関数の基本的な使用法と結果の取得法を示します。

list($diff, $errors) = svn_diff(     'http://www.example.com/svnroot/trunk/foo', SVN_REVISION_HEAD,     'http://www.example.com/svnroot/branches/dev/foo', SVN_REVISION_HEAD ); if (!$diff) exit; $contents = ''; while (!feof($diff)) {   $contents .= fread($diff, 8192); } fclose($diff); fclose($errors); var_dump($contents);

上の例の出力は以下となります。

Index: http://www.example.com/svnroot/trunk/foo =================================================================== --- http://www.example.com/svnroot/trunk/foo (.../foo) (revision 23) +++ http://www.example.com/svnroot/branches/dev/foo (.../foo) (revision 27) // この後に diff の内容が続きます

例2 あるパスのふたつのリビジョンの差分の取得

この例では、外部リポジトリ上の同じパスのアイテムについて、 ふたつのリビジョン間の差分を簡単に取得できるようにしたラッパー関数を実装します (デフォルトの構文だと少々冗長なので)。

function svn_diff_same_item($path, $rev1, $rev2) {     return svn_diff($path, $rev1, $path, $rev2); }

例3 ローカルファイルの差分の取得

この例では、ふたつのローカルファイルの差分を 簡単に取得できるようなラッパー関数を実装します。 realpath() による補正と、 バックスラッシュに関するバグの対応を含めています。

function svn_diff_local($path1, $rev1, $path2, $rev2) {     $path1 = str_replace('\\', '/', realpath($path1));     $path2 = str_replace('\\', '/', realpath($path2));     return svn_diff($path1, $rev1, $path2, $rev2); }

参考

  • » SVN ドキュメントの svn diff
  • ワード検索


    ※入力キーワードが、関数名・説明文・タグに含まれるものを検索

    関数名アルファベット別

    A B C D E F G H I J
    K L M N O P Q R S T
    U V W X Y Z _

    最終更新一覧

    stristr
     大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却

    stripslashes
     バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く

    stripos
     大文字小文字を区別せずに文字列が最初に現れる位置を取得する

    stripcslashes
     addcslashes() でクォートされた文字列をアンクォートする

    strip_tags
     文字列から HTML と PHP のタグを除去して返却

    strcspn
     指定した文字が最初に現れる位置を調べる

    strcoll
     ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する

    strcmp
     2つの文字列を比較し同じか(あるいは大小)を判定する

    strchr
     strstr() のエイリアス

    strcasecmp
     2つの文字列を比較(大文字小文字を区別せず同じとみなす)

    カテゴリー一覧

    PHP の振る舞いの変更
    音声フォーマットの操作
    認証サービス
    コマンドライン関連
    圧縮およびアーカイブ
    暗号
    データベース関連
    日付および時刻関連
    ファイルシステム
    自然言語および文字エンコーディング
    画像処理および作成
    メール関連
    数学
    テキスト以外の MIME 型
    プロセス制御
    その他の基本モジュール
    その他のサービス
    検索エンジン用の拡張モジュール
    サーバー固有のモジュール
    セッション関連
    テキスト処理
    変数・データ型関連
    ウェブサービス
    Windows 用のモジュール
    XML 操作
    GUI用の拡張モジュール