0

ユーザーがリポジトリ パスへの書き込みアクセス権を持っているかどうかを確認する方法はありますか? 私が今していることは、ディレクトリを作成してから削除して、ユーザーが書き込み可能なアクセス権を持っているかどうかを確認しようとしています:

svn mkdir --username username --password password --message "check whether user username has repository writable access" "svn://localhost:3129/test"
svn delete --username username --password password --message "check whether user username has repository writable access" "svn://localhost:3129/test"

問題は、これらの操作がアプリケーションのソース コードの一部として頻繁に実行されることです。その結果、ユーザーが書き込み可能なアクセス権を持っている場合、リポジトリは不要なコミットを取得しすぎます。

svn checkaccess --username username --password password svn://localhost:3129/test常に一時ディレクトリを作成する必要がないように、同様のコマンドまたはその他の回避策はありますか?

4

1 に答える 1

1

ハックな方法を提案できますが、すべてのプロトコルで機能するかどうかはわかりません (DAV でテストしました --- 機能し、file:/// ではすべてのパスが書き込み可能です)。

Subversion にはいくつかの API があります。一部の言語 (少なくとも C (libsvn_ra)、Java ( SVNKit )、Perl ( AlienSVN )) は、エディター呼び出しでコミットを作成できるリモート API を提供します (PHP が行うかどうかはわかりません)。書き込み可能性を確認する URL に対して次の呼び出しを実行すると、次のようになります。

openRoot -1
changeDirProperty customPropertyName custromPropertyValue
closeDir
abortEdit

ディレクトリが書き込み可能な場合、abortEdit() 呼び出しのため、このシーケンスは変更を実行しません。ただし、DAV の場合、書き込み可能でない場合、これはエラー コード RA_NOT_AUTHORIZED (E170001) で失敗します。

Java で SVN リモート API を使用して commit を使用する方法を示す記事があります。PHPコードは似ていると思います。

役に立てば幸いです (そうでない場合は、少なくとも Java/C/Perl 開発者)。

于 2012-07-21T17:20:05.347 に答える