检查用户的subversion可写访问权限

时间:2012-07-21 15:47:36

标签: svn version-control permissions repository

有没有办法检查用户是否具有对某些存储库路径的可写访问权限?我现在做的是尝试创建目录,然后删除它以检查用户是否具有可写访问权限:

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的命令或任何其他解决方法,以便我不需要一直创建临时目录?

1 个答案:

答案 0 :(得分:1)

我可以提出一种hacky方式,但我不确定它是否适用于所有协议(我使用DAV测试---它有效,文件:///所有路径都可写)。

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)而失败。

有一个article,它显示了如何在Java中使用SVN远程API提交。我认为PHP代码看起来很相似。

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