0

作業コピーを必要とせずに、SVNリポジトリで(重要な場合はHTTP経由で)SVN操作を実行したいと思います。基本的に、これが私がやりたいことです:

  1. ディレクトリがリモートに存在するかどうかを確認します。

    • ディレクトリが存在しない場合は、作成してください
  2. ファイルがリポジトリに存在するかどうかを確認します

    1. ファイルが存在しない場合は、自分のコンテンツを使用してリポジトリに新しいファイルを作成します
      • これには、認証されたWebDAV作成者ではなく、私が提供する作成者名を使用する必要があります(これが、WebDAVアプローチが機能しない理由です)
    2. ファイルが存在する場合は、その内容を指定したファイルの内容に置き換えます。

自動バージョン管理アプローチを使用しようとしていますが、その方法ではWebDAVサーバーの認証を設定する必要があり、これは私の状況では理想的とは言えません。FS操作を使用することもできます(クライアントはSVN 1.6であるため、浅い作業コピーとコマンドライン機能します)が、それは遅くてエレガントではありません。

私が説明したことを実行できるライブラリ(PHP 4.4から使用可能でなければなりません!)はありますか?

4

4 に答える 4

2

私がPHPからSVNに手を出した経験はほとんどありません。PHPスクリプトからsvn実行可能ファイルへのコマンドラインアクセスがある場合は、そのようにしてください。

プロトコルのPHP実装よりも常に高速で、信頼性が高くなります。

私が試したすべてのPHPSVNクライアントには、欠陥やバグがあるか、まったく不安定でした。(ただし、PECLはわかりません。)

于 2010-01-08T17:06:28.607 に答える
2

svn次のコマンドラインまたは svn 拡張機能に相当するものを見つけます。

ディレクトリがリモートに存在するかどうかを確認します。

svn info <URL>

ディレクトリが存在しない場合は、作成します

svn mkdir <URL>

リポジトリにファイルが存在するかどうかを確認する

svn info <URL>

ファイルが存在しない場合は、自分のコンテンツでリポジトリに新しいファイルを作成します

これは、作業コピーがないと難しいです。一時ファイルを作成してから、次のことができます。

svn import /tmp/mytempfile <URL>

ファイルが存在する場合は、その内容を指定したファイルの内容に置き換えます。

svn delete <URL>

上記に続いて、作業コピーなしでファイルを変更することはできません。これにより、Subversion の最適な使用法が得られないことに注意してください。ファイルではなく、変更を保存するように設計されています。数行のテキストを変更するための削除/インポートはお勧めしません。

これは、認証された WebDAV 作成者ではなく、私が提供する作成者名を使用する必要があります (これが、WebDAV アプローチが機能しない理由です)。

webdav を使用して任意の作成者名を提供することはできません。HTTP(S) を介してリモート サーバーに認証し、その名前が作成者として使用されます。別の名前が必要な場合は、サーバー上に別のユーザーを作成し、そのユーザーにリポジトリへのアクセス権を付与する必要があります。

于 2010-01-08T17:17:42.533 に答える
1

このクラスを試すことができます: http://www.phpclasses.org/browse/package/4270.html

おそらくPHP 3から動作しています...

于 2010-01-08T16:46:35.150 に答える
0

たぶん、PECL::svn 拡張機能(マニュアル) でよいでしょうか?

最新バージョンの要件は次のとおりです。

PHP Version: PHP 4.0.0 or newer


そして、あなたが望むことをすることができる機能があるようです; 例えば ​​:

  • svn_mkdir: 作業コピーまたはリポジトリにディレクトリを作成します。

ただし、必要なすべての機能があるかどうかはわかりません...

于 2010-01-08T16:59:59.650 に答える