2013-05-31 56 views
0

我在Windows上安裝了Collabnet Subversion Edge v3.3.1。我已經啓用了基本的訪問限制,但這並沒有給我的靈活性,做到以下幾點:1。 放棄文件/文件夾被用戶刪除 2.使用通配符在一個倉庫中指定的文件級權限svnperms.py在帶有Collabnet Subversion Edge的windows上不起作用

因此,我Google搜索並找到了svnperms.py來滿足我的要求。我遵循互聯網上的指示,並配置了svnperms.py來限制訪問。

我的pre-commit鉤子看起來如下:

set REPOS=%1 
set TXN=%2 

REM "C:\csvn\Python25\python.exe" "C:\csvn\data\repositories\repos\hooks\svnperms.py" -r "%repos%" -t "%txn%" - f "C:\csvn\data\repositories\repos\hooks\svnperms.conf" 

"C:\csvn\Python25\python.exe" "C:\csvn\data\repositories\repos\hooks\svnperms.py" - f "C:\csvn\data\repositories\repos\hooks\svnperms.conf" -r "%REPOS%" -t "%TXN%"||exit 1; 
exit 0; 

我的配置文件看起來像

[groups] 
group1 = sowmya.dass 
group2 = m.b 
[repos] 
a/.* = @group1(update) 
a/.* = @group2(delete) 

我試圖通過使用戶M.B刪除其下的文件夾中的文件存儲庫中的測試此。由於用戶可以訪問他應該能夠做到這一點,但隨後當他試圖提交我得到下面的錯誤:

命令:提交
刪除C:\ m_ws_edge \ A \的pom.xml
錯誤:提交失敗(細節如下):
錯誤:提交阻斷pre-commit鉤子(退出代碼1)輸出:
錯誤:svnlook的作者C:\ csvn \數據\庫\回購-t 5-C
錯誤:'{'不被識別爲內部或外部命令,
錯誤:可操作的程序或批處理file.error:命令失敗:svnlook作者
錯誤:C:\ csvn \ data \ repositories \ repos -t 5 -c
錯誤:'{'未被識別爲內部或外部命令,
錯誤:可操作的程序或批處理文件。
已完成!:

當任何用戶嘗試執行任何操作(無論用戶是否具有訪問權限)時都會出現相同的錯誤。

我看了一篇早期文章How to control changes to tags in SVN server on Windows討論了類似的問題。但該解決方案不適合我的要求。而且它還提到了svnperms.py不能在windows上工作,這是由於底層svnlook命令只適用於unix。我也碰巧看到互聯網上提到類似問題的其他帖子,但我找不到任何解決方案讓svnperms.py在Windows上工作。

任何人可以幫助我: 1.修正上面的錯誤,並獲得在Windows和/或 2.替代解決方案svnperms.py工作,以適應能夠放棄用戶我的上述要求刪除的文件/文件夾並能夠在基於文件的訪問限制中使用通配符。

謝謝!

問候

Sowmya達斯

回答

0

問題不看在你的鉤。它看起來更像是在svnperms.py中。

可能無法找到某個程序的路徑。掛鉤從光環境開始。(甚至沒有設置路徑)

這也看起來與Subversion Edge沒有關係。鉤子由底層的Subversion「引擎」處理。

-Edit-
你可能想看看文章here。它是svnperms的一個.Net端口。

這裏是別的東西來檢查(與裸露環境)Set up svnperms pre-commit hook

1

我不相信鉤沒有找到可執行文件。您的退出代碼爲1,而不是255

這裏的錯誤輸出你的鉤傳回給你:

svnlook author C:\csvn\data\repositories\repos -t 5-c 
'{' is not recognized as an internal or external command, 
operable program or batch file.error: command failed: svnlook author 

C:\csvn\data\repositories\repos -t 5-c 
'{' is not recognized as an internal or external command, 
operable program or batch file. 

我看到輸出command failed: svnlook author在你的Python腳本的187線的產生。

該操作看起來非常簡單。將創建一個SVNLook類以執行svnlook命令。這是在#174行定義的。第#233行定義了這個類的author方法。第243行正在執行這一行並查找作者。

如果svnlook author沒有返回非零狀態,(行號183),該命令字符串被寫入:

svnlook author C:\csvn\data\repositories\repos -t 5-c 

然後返回的錯誤字符串:

'{' is not recognized as an internal or external command, 
operable program or batch file.error: 

而且最後,

command failed: svnlook author 

我不是100%確定最後三行來自哪裏。

svn author C:\csvn\data\repositories\repos -t 5-c對我來說是正確的。 '{' is not recognized as an internal or external command字符串不應該是對svnlook命令的響應。

我不知道是否有一個Perl版本svnlook潛伏在你的系統上的某個地方。我相信在Windows系統中,%PATH%%PATHEXEC%環境變量未被清零。

查看當您執行pre-commit.bat腳本時是否可以打印出%PATH%。我認爲,所有你需要做的是添加:

PATH 1>&2 

或類似precommit.bat腳本的東西。然後,查看您的系統上是否有另一個svnlook.bat可能會在C:\csvnsvnlook命令之前執行。

您還可以嘗試我的pre-commit掛鉤腳本。它是用Perl編寫的,但也使用控制文件來定義權限,並且可以執行您請求的所有內容。我的腳本要求您指定svnlook所在的位置,這將消除您在系統某處執行錯誤的svnlook命令的可能性。

相關問題