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

我可以提出一种 hacky 方式,但我不确定它是否适用于所有协议(我用 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 一起使用。我认为 PHP 代码看起来很相似。

希望它有所帮助(如果不是你,那么至少是 Java/C/Perl 开发人员)。

于 2012-07-21T17:20:05.347 回答