有没有办法检查用户是否具有对某些存储库路径的可写访问权限?我现在做的是尝试创建目录,然后删除它以检查用户是否具有可写访问权限:
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
的命令或任何其他解决方法,以便我不需要一直创建临时目录?
答案 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开发人员)。