2009-05-19 55 views
3

我已經從頭設置了一個SVN存儲庫,並且我已經使用SVN copy命令成功標記了一些我的版本。Subversion標記和安全

我使用SSPI認證插件爲Apache,所以我們的開發人員只是打他們的網絡憑據的服務器,並且一切都很好。

我創建了一個AuthZ授權文件,將我們的開發人員添加到文件中的組中,並授予他們對根的寫權限。我也授予匿名用戶對根目錄的只讀權限。

我則封鎖了/ SVN /目錄中:要求組「CORP \ CKAN0BlahBlah」

這有效的安全組中限制新的開發者爲只讀訪問,直到它們通過aAuthZ配置授予訪問權限文件。

現在,我有幾個問題:

  1. 什麼正確的方法是(比 其他榮譽系統),以防止用戶 從commiting更改任何 「標籤」目錄?

  2. 是否有可能使用SSPI傳遞 的羣體AuthZ的成員, 而不是在配置 文件列表成員 分別?

回答

3

對於問題#1,我爲此開發:

@echo off 
SET SVNLOOK=C:\Program Files\CollabNet Subversion Server\svnlook.exe 
SET GREP=D:\SVN\Repo\hooks\grep.exe 
SET LOG=D:\SVN\Repo Logs.txt 

>>"%LOG%" echo ==== commit %1 %2 ==== 
>>"%LOG%" "%svnlook%" changed -t %2 %1 

("%svnlook%" changed -t %2 %1 | "%grep%" "^U.*/tags/") && (echo Cannot commit to tags.>&2 && exit 1) 
("%svnlook%" log -t %2 %1 | "%grep%" "[a-zA-Z0-9]") || (echo You must specify a comment.>&2 && exit 1) 

exit 0 

http://sourceforge.net/projects/unxutils


抓起grep工具對於問題2,答案是否定的,你不能檢查AuthZ配置文件中的AD安全組。

感謝您的幫助,每個人。

6

1 - 您可以使用預提交掛鉤來防止提交,請參閱SVN pre-commit hook for avoiding changes to tags subdirectories

編輯:要做到這一點在Windows上,請嘗試以下操作:

保存此作爲預commit.bat在回購的鉤子文件夾文件名爲:

@echo off 
set REPOSITORY=%1 
echo %REPOSITORY% | find /I "tags" 
if errorlevel 1 goto done 
echo You tried to commit to %REPOSITORY% >&2 
echo Committing to tags is not allowed >&2 
exit 1 
:done 

注,這將阻止提交到包含子串標籤的任何存儲庫路徑。根據您的需求進行修改。

+0

有沒有辦法在Windows上做到這一點? – 2009-05-19 18:49:03

+2

掛鉤位於服務器端,因此它可以通過編譯的應用程序,shell腳本,命令文件等完成,這是本機主機平臺的特有功能。 – crashmstr 2009-05-19 18:52:33

+0

所以,我一直在搜索一個.bat pre-commit腳本,幾乎所有的腳本都調用了Perl腳本。我不知道我可以獲得在此服務器上安裝perl的權限,那麼您是否知道純粹的.bat版本? – 2009-05-19 18:56:17

2

沒有「正確的」方法。標籤是一種約定,開發者應該學習並遵循它。除此之外,可以使用Subversion掛鉤實現故障安全。請參閱this頁面以獲得一個很好的教程。

1

這在我看來是一個教育和過程的問題。如果您的開發人員瞭解您的SVN標籤的用途,那麼您很可能不會有人(有意)對提交標籤進行提交。我發現,有效溝通這些流程是不可或缺的,它是最新的書面文件。我的團隊使用wiki來存儲關於我們流程的文檔(具體來說,我們使用MediaWiki)。 wiki方法似乎使事情更容易獲得,並且比保存更新版本的MS Office文檔等更容易保持最新狀態。

0

如何使用svn-auth文件來定義?這看起來像這樣:

[groups] 
ADMINS=<your ID> 
<rest of groups>=<all other IDs> 

[/] 
* = r 
<rest of groups> = rw 
@ADMINS = rw 

[/tags] 
<rest of groups> = r 

這將允許ADMINS讀寫訪問標記目錄,但沒有其他人。我不知道SSPI認證插件,所以也許我提供的示例在您的上下文中不起作用。