2012-07-21 27 views
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或任何其他解決方法的命令,以便我不需要始終創建臨時目錄?

回答

1

我可以提出一個黑客的方式,但我不確定它適用於所有協議(我使用DAV進行了測試---它的工作方式是file:///所有路徑都是可寫的)。

Subversion有幾個API。一些語言(至少C(libsvn_ra),Java(SVNKit),Perl(AlienSVN))提供了允許使用編輯器調用(我不知道PHP是否)創建提交的遠程API。如果執行的URL下面的調用要檢查可寫性:

openRoot -1 
changeDirProperty customPropertyName custromPropertyValue 
closeDir 
abortEdit 

這個序列不執行,因爲abortEdit的變化()調用,如果該目錄是可寫的。但是對於DAV,如果不可寫,則失敗,錯誤代碼爲RA_NOT_AUTHORIZED(E170001)。

有一個article顯示瞭如何在Java中使用提交與SVN遠程API。我認爲PHP代碼看起來很相似。

希望它有幫助(如果不是你,那麼至少Java/C/Perl開發人員)。

+0

其實,我想過用svnkit在java上重寫SVN模塊。但是我仍然希望能夠找到基於php的解決方案,以便我不需要重寫我的應用程序。 – altern 2012-07-21 18:15:32