SVN 預提交刪除權限控制,不影響正常讀寫

背景:SVN的項目文件被普通用戶誤刪了,這是個非常嚴重的錯誤,還好恢復的及時,不然的話,後果不堪設想。但是由於刪除的文件比較多,註釋的內容簡單,恢復的時候需要一個個的保存到本地,然後再上傳到服務器上,開發這些模塊的小夥伴們還會遇到提交代碼版本衝突的問題。由於波及的範圍比較大,所以領導讓我研究一下,怎麼才能禁止普通用戶刪除SVN中的項目文件

本文只涉及到pre-commit:提交之前執行,在start-commit之後,通常用來對提交內容的檢查,例如我們後邊要介紹的利用pre-commit做提交log的合規性檢查,需要傳遞兩個參數給hooks腳本,按照順序依次爲:1.版本庫路徑,2.提交事務的名稱。具體詳解請到SVN hooks介紹

【步驟】

1、找到需要加權限的版本庫中hooks目錄下的pre-commit.tmpl文件,將其重命名,將後綴去掉,爲pre-commit腳本文件。如果沒有該文件,則新建腳本pre-commit。

2、修改pre-commit.bat文件的內容   將下面的這段複製進去即可    set SCM 配置的是允許刪除的人員

@echo off
setlocal
set Repos=%1
set TXN=%2
set SCM=admin


svnlook author -t "%TXN%" "%Repos%" | findstr "%SCM%"
IF %ERRORLEVEL% gtr 0 goto check
goto comment


:check
svnlook changed -t "%TXN%" "%Repos%" | findstr "^D"
if %ERRORLEVEL% == 0 goto err
goto comment

:comment
svnlook log "%REPOS%" -t "%TXN%" | findstr ".........." > nul
if %errorlevel% gtr 0 goto err2
exit 0

:err
echo 只允許管理員刪除,若需要刪除請聯繫管理員!!!. 1>&2
pause
exit 1

:err2
echo 註釋內容不能少於10個字符!!!. 1>&2
pause
exit 1

保存之後 可能需要重啓svn服務(我雙擊了兩下pre-commit.bat文件可以了 )

---------------------------------------------------------------------------------------------

注:SCM=admin  表示只有admin用戶有刪除文件的權限,如果還有其他人,只需用逗號隔開,當然,這些用戶名需要在conf下的passwd文件中進行配置

無效時的調整:使用的時候出現了錯誤,我修改了腳本一個地方,把%1修改成我的Repo文件夾地址就可以了。
set Repos=D:\SVN\Repo

 

參考《經驗分享之SVN禁止刪除和強制註釋操作的鉤子腳本pre-commit

參考《SVN 預提交刪除權限控制,不影響正常讀寫

參考《SVN hooks介紹

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章